信息学奥林匹克冬令营2012 WC2012 试题

合集下载

2012年义乌市小学信息学奥林匹克竞赛试题(附答案)

2012年义乌市小学信息学奥林匹克竞赛试题(附答案)

2012年义乌市小学信息学奥林匹克竞赛试题(小学组 pascal语言二小时完成)姓名:一、单选(每题1.5分共30分)1、与十进制数29等值的二进制数是(A )A. 11101 B.11001 C.10111 D.110112、右图是一张黑白两色位图,假如使用0表示白色,1表示黑色那么这幅黑白两色位置对应的二进制编码为(B )A.0100011 B.1011100 C.1000011 D.01000013、上题中的黑白两色位置如果要在计算机内部完整地保存,在不进行压缩的前提下,最少需要多少存储空间(C)A. 8Byte B. 8KB C. 8bit D.8MB4、下列计算机设备中,属于存储设备的是(B)A.键盘 B.RAM C.显示器 D.CPU5、下列选项中,对计算机运行速度的快慢没有影响的是:(D)A.CPU B.内在 C.硬盘缓存 D.显示器的屏幕尺寸6、下面是计算机操作系统的是(D)A.Free Pascal B.Adobe Photoshop C.Microsoft Word D.Linux7、下列关于计算机病毒的描述中,正确的是(C)A.如果某人有感冒病毒,那么他使用的计算机就有可能感染病毒,并最终发展为计算机病毒B.如果计算机在生产厂家组装时周围环境不好(有灰尘等),计算机就会有计算机病毒C.计算机病毒实质上是一段计算机程序D.计算机病毒只能通过计算机网络传播8、关于网页中的超链接,下列说法正确的是:(A)A.超链接的HTML标志是<a> B.一张网页只能包含一个超链接C. 将网页保存为文本文件后,超链接依然存在D.超链接的对象只能是另一张网页。

9、下面列出的文件,不能用windows附件中画图程序打开的是(C)A.apple.bmp B.banana.jpg C.orange.raw D.pear.png10、关于电子邮件的叙述,正确的是(B)A.发送方和接收方必须同时开机才能传送电子邮件B.打开电子邮件的附件可能会传染计算机病毒C.同一个E-Mail帐号不能同时设置在多台计算机上D.发送电子邮件是,接收方地址不能与发送方相同。

NOIP2012提高组复赛试题

NOIP2012提高组复赛试题

全国信息学奥林匹克联赛(2012)复赛提高组22 . 1 •同余方程〖问题描述〗求关于的同余方程三1 (句的最小正整数解。

【输入〗输入文件为输入只有一行,包含两个正整数用一个空格隔开【输出〗输出文件为输出只有一行,包含一个正整数血即最小正整数解。

输入数据保证一定有解。

『输入输出样例〗『数据范围〗对于40%的数据,2L000:对于60%的数据,2 50 , 000, 000:对于100%的数据,2, 2, 000, 000, 0002 •借教室(.)【问题描述〗在大学期间,经常需要租借教室。

大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。

教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。

面对海量租借教室的信息,我们自然希望编程解决这个问题。

我们需要处理接下来n天的借教室信息,其中第i天学校有个教室可供租借。

共有m份订单,每份订单用三个正整数描述,分别为d],斗t},表示某租借者需要从第丬天到第t]天租借教室(包括第丬天和第t)天),每天需要租借个教室。

我们假定,租借者对教室的大小、地点没有要求。

即对于每份订单,我们只需要每天提供d]个教室,而它们具体是哪些教室,每天是否是相同的教室则不用考虑。

借教室的原则是先到先得,也就是说我们要按照订单的先后顺序依次为每份订单分配教室。

如果在分配的过程中遇到一份订单无法完全满足,则需要停止教室的分配,通知当前申请人修改订单。

这里的无法满足指从第丬天到第t)天中有至少一天剩余的教室数量不足d)个。

现在我们需要知道,是否会有订单无法完全满足。

如果有,需要通知哪一个申请人修改输入〗输入文件为第一行包含两个正整数n,m,表示天数和订单的数量。

第二行包含n个正整数,其中第i个数为,表示第i天可用于租借的教室数量。

接下来有m行,每行包含三个正整数],t],表示租借的数量,租借开始、结束分别在第几天。

每行相邻的两个数之间均用一个空格隔开。

天数与订单均用从1开始的整数编号。

全国青少年信息学奥林匹克联赛培训习题与解答(附程序解析主要是动态规划).pdf

全国青少年信息学奥林匹克联赛培训习题与解答(附程序解析主要是动态规划).pdf

例13-4迷宫寻宝【问题描述】一个n行m列的迷宫(1<=n,m<=5),入口在左上角,规定只能向下或向右走。

迷宫的某些地方藏有不同价值(>0)的宝藏,同时又存在一些障碍无法通过。

求到达右下角出口时收集宝藏的最大值。

【输入】第一行n和m一下n行m列描述迷宫矩阵a[I,j](-1:障碍);最大值【样例输入】342-150513-16-18910【样例输出】33【分析】A[I,j]保存第i行第j列的宝藏价值。

令f[I,j]为从(1,1)走到第i行第j列时所能收集的宝藏的最大价值。

状态转移方程:F[I,j]=max{f[I-1,j],f[I,j-1]}+a[I,j](i<=n,1<=m)条件:n[I,j]<>-1初始:f[1,1]=a[1,1]目标:f[n,m]【参考程序】Const maxn=50;maxm=50;Fin=’b1.in’;Fout=’b1.out’;VarF,a:array[0..maxn+1,0..maxm+1]of integer;I,j,k,n,m,t:integer;Procedure init;BeginAssign(input,fin);Reset(input);Readln(n,m);For i:=0to n+1doFor j:=0to m+1do a[I,j]:=-1;A[0,1]:=0;For i:=1to n doFor j:=1to m doBeginRead(a[I,j]);If(a[I,j-1]=-1)and(a[i-1,j]=-1)then a[I,j]:=-1;//很关键的预处理End;Close(input);End;Function max(a,b:integer):integer;Begin max:=a;if b>a then max:=b;end;Procedure work;BeginFillchar(f,sizeof(f),0);For i:=1to n doFor j:=1to m doIf a[I,j]<>-1Then f[I,j]:=max(f[i-1,j],f[I,j-1])+a[I,j];End;Procedure print;BeginAssign(output,fout);Rewrite(output);Writeln(f[n,m]);Close(output);End;BeginInit;Work;Print;End.13-5花店橱窗布置(IOI1999)【问题描述】假设你想以最美观的方式布置花店的橱窗。

信息学奥赛试题集

信息学奥赛试题集

全国青少年信息学奥林匹克联赛培训习题与解答(中学高级本)光盘模拟试题集普及组 (2)第一套 (2)打保龄球 (2)安全逃离 (2)表达式的转换 (3)到天宫做客 (4)第二套 (5)奶牛卧室 (5)进制转换 (5)硬币翻转 (5)拱猪计分 (6)第三套 (7)车厢重组 (7)阶乘问题 (8)子数整数 (8)垃圾陷阱 (9)提高组 (10)第一套 (10)低价购买 (10)棋盘游戏 (10)求正整数 (11)奇怪的电梯ok (11)第二套 (12)轰炸 (12)连续自然数和ok (12)约瑟夫 (13)点和线 (13)第三套 (14)杂务 (14)排行榜 (14)银行贷款 (15)机器人搬重物 (16)第四套 (17)数字组合 (17)相似基因 (17)波浪数 (18)文件压缩 (19)省队训练 (20)第一套 (20)海战ok (20)POLYGON (20)POWER (21)婚礼 (21)第二套 (22)多边形的面积 (22)玛丽卡 (23)PASTE (24)SEARCH (24)第三套 (25)文件排版 (25)纵横填字游戏 (26)普通递归关系 (27)完美的对称 (28)普及组第一套打保龄球源程序名bowling.??? (pas,c,cpp)可执行文件名 bowling.exe输入文件名 bowling.in输出文件名 bowling.out打保龄球是用一个滚球去打击十个站立的柱,将柱击倒。

一局分十轮,每轮可滚球一次或多次,以击倒的柱数为依据计分。

一局得分为十轮得分之和,而每轮的得分不仅与本轮滚球情况有关,还可能与后续一两轮的滚球情况有关。

即某轮某次滚球击倒的柱数不仅要计入本轮得分,还可能会计入前一两轮得分。

具体的滚球击柱规则和计分方法如下:(1)若某一轮的第一次滚球就击倒全部十个柱,则本轮不再滚球(若是第十轮则还需另加两次滚球,不妨称其为第十一轮和第十二轮,并不是所有的情况都需要滚第十一轮和第十二轮球)。

冬令营一试题目

冬令营一试题目

2012年北京市信息学竞赛冬令营一试好好学习,天天向上题目名称源代码文件输入文件输出文件数据组数总分算不出的等式calculator.*calculator.in calculator.out10100最多的方案fib.*fib.in fib.out10100连连看clear.*clear.in clear.out10100算不出的算式背景:曾经有一个老掉牙的游戏放在我面前,我没有珍惜。

直到这个游戏停产才追悔莫及。

人世间最痛苦的事情莫过于此,如果上天给我一个再玩一次的机会,我一定要,通关!题目描述:如果你真的很想玩这个游戏,那么就先看看我的题目吧,搞不定这些的话是没办法通关的哟。

第一关其实很简单,只有一个关闭的有密码锁的大门。

这大门上写着一个奇怪的算式,估计是要你利用它算出密码来开门吧(果然是老掉牙的情节)。

传说中这个式子中的p和q是两个奇质数,等号右边算出来应该就是密码了吧,你是真的算不出来么?输入:只有一行,两个奇质数,分别表示p,q。

输出:一个数,表示算式结果。

样例输入:57样例输出:6HINT:p,q在32位整型范围内。

最多的方案题目描述:第二关和很出名的斐波那契数列有关,地球上的OIer都知道:F1=1, F2=2,F i=F i-1+F i-2,每一项都可以称为斐波那契数。

现在给一个正整数N,它可以写成一些斐波那契数的和的形式。

如果我们要求不同的方案中不能有相同的斐波那契数,那么对一个N最多可以写出多少种方案呢?输入:只有一个整数N。

输出:一个方案数样例输入:16样例输出:4Hint:16=3+13=3+5+8=1+2+13=1+2+5+8对于30%的数据,n<=256对于100%的数据,n<=10^18连连看题目描述:凡是考智商的题里面总会有这么一种消除游戏。

不过现在面对的这关连连看可不是QQ游戏里那种考眼力的游戏。

我们的规则是,给出一个闭区间[a,b]中的全部整数,如果其中某两个数x,y(设x>y)的平方差x2-y2是一个完全平方数z2,并且y与z互质,那么就可以将x 和y连起来并且将它们一起消除,同时得到x+y点分数。

NOIP2012信息学奥林匹克竞赛初赛-模拟卷

NOIP2012信息学奥林匹克竞赛初赛-模拟卷

2012年全国青少年信息学奥林匹克联赛初赛模拟试题一.单项选择题(共10题,每题1.5分,共计15分,每题有且仅有一个正确答案。

)1、以下说法正确的是()A、第一个提出“goto语句有害论”的计算机科学家是Donald E.KnuthB、被誉为“迄今最伟大的计算机程序员、算法学家”的是Edsger Wybe DijkstraC、世界上第一位程序员是V on NoumaD、被誉为“计算机语言之母”的是Grace Hopper2、关于CPU的说法正确的是()A、计算机的运算速度取决于给定的时间内,它的处理器所能处理的数据量。

B、64位计算机指的是CPU每秒钟可处理的数据为2^64位。

C、双核CPU,是指在一个主板上放入两个CPU并行进行工作。

D、我国自主产权的CPU龙芯3A集成了两个处理器核心3、ASCII码表中的大写字母后有6个其它字符,接着便是小写字母。

现已知:A字母的ASCII码为(41)16{表示16进制数41 },那么f应为( )10A、46B、78C、102D、1084、Pascal的创始人是()。

(A)Donald E.Knuth (B)Steve Jobs (C)Charles Bachman D (D)Niklaus Wirth5、若二叉树的先序遍历序列为ABDECF,中序遍历序列DBEAFC,则其后序遍历序列为()A. DEBAFCB. DEFBCAC. DEBCFAD. DEBFCA6、已知后缀表达式abc+*d-,则它的中缀表达式和前缀表达式分别是:A) (a+b)*c-d -+*abcd B)a+b*c-d -+a*bcdC)a*(b+c)-d -*a+ bcd D)a*(b+c)-d -a b*+cd7、由权值为9,2,5,7的四个叶子结点构造一棵哈夫曼树,该树的带权路径长度为()A.23B.37C.44D.468、排序算法是稳定的意思是:关键码相同的记录排序前后相对位置不发生改变,下列哪种排序算法是不稳定的:A) 冒泡排序 B) 插入排序 C) 归并排序 D) 快速排序9、下图给出了一个加权有向图,从顶点V1出发,以下哪个是活动中的关键路径()A. V1,V5,V3,V2B. V1,V4,V3,V2C. V1,V4, V2D. V1,V4,V5,V3,V210、以下有关全国信息学奥林匹克竞赛说法有误的是()A、 NOI评测只检查按照要求输出的结果,而不涉及过程和算法。

2012年青少年信息学奥林匹克联赛初赛自测试题

2012年青少年信息学奥林匹克联赛初赛自测试题

2012年青少年信息学奥林匹克联赛初赛自测试题一、选择正确的答案代码(A/B/C/D/E ),1-10题为单选题,11-20题为不定项选择题。

(每题1.5分,只有全对才得分,共30分)1、在解决计算机主机与打印机之间速度不匹配时通常设置一个打印数据缓冲区,主机将要输出打印的数据依次写入该缓冲区,而打印机从该缓冲区中取出数据打印。

该缓冲区应该是一个( )结构。

A.堆栈B.队列C.数组D.记录E.线性表2、如果一张有60分钟的cd 唱盘,其采样频率为44.1khz ,采样数据为16位,双声道,那么它的容量所占用的存储空间为( )。

A.400mbB.600mbC.500mbD.700mb3、一棵树T 有2个度数为2的结点,有1个度数为3的结点,有3个度数为4的结点,那么树T 有( )个树叶。

A.14B.6C.18D.74、下面四个不同的进制的数,最小的一个数是( )A .(11011001)2B .(75)10C .(37)8D .(A7)165、在待排序的数据表已经为有序时,下列排序算法中花费时间反而多的是( )A .堆排序B .希尔排序C .冒泡排序D .快速排序6、现有一满瓶8两可乐,另有两个3两和5两的空瓶子,再也没有其它容器了,小明只能喝4两,问他至少要倒多少次才能刚好喝到4两可乐( )A. 4B.5C.6D.7E.87、中缀表达式(a-b)*(cd)的后缀表达式是( )A. abcd*- ab-cd C. ab-*cd D. a-bcd *8、断电后计算机信息依然存在的部件为( )A .寄存器 B. RAM 存储器 C. ROM 存储器 D. 运算器 E.控制器9、设有两个散列函数h1(k)=k mod 13 和 h2(k)=k mod 11 +1,散列表为T[0…12],用二次散列法解决冲突。

函数h1用来计算散列地址,当发生冲突时,h2作为计算下一个探测地址的地址增量。

假定某一时刻散列表的状态为:0 1 2 3 4 5 6 7 8 9 10 11 1280 44 35下一个被插入的关键码为57,其插入的位置为( )A. 4B. 5C. 6D. 7E. 810、 假设在程序开始执行时,数组A[1…n]是一组随机整数。

NOIP2012普及组复赛试题及解答

NOIP2012普及组复赛试题及解答
第 5 页 共 10页
全国信息学奥林匹克联赛(NOIP2012)复赛 试题及解答
普及组
start--; do{ start++; start%=m; //start是刚进入第i+1层时的房间号 if (a[i][start][0]==1) //此房间有楼梯 { k--; } } while (k!=0); //k!=0表示尚未找到牌号所指示的房间 } fprintf(outputfp,"%d\n",temp); } fclose(inputfp); fclose(outputfp); return 0; }
第 3 页 共 10页
全国信息学奥林匹克联赛(NOIP2012)复赛 试题及解答
普及组
2.寻宝
(treasure.cpp/c/pas) 传说很遥远的藏宝楼顶层藏着诱人的宝藏。 小明历尽千辛万苦终于找到传说中的这个藏 宝楼,藏宝楼的门 口竖着一个木板,上面写有几个大字:寻宝说明书。说明书的内容如下: 藏宝楼共有 N+1 层, 最上面一层是顶层, 顶层有一个房间里面藏着宝藏。 除了顶层外,藏宝楼另有 N 层, 每层 M 个房间, 这 M 个房间围成一圈并按逆时针方向依次编号为 0, …, M-1。其中一些房间有通往上一层的 楼梯,每层楼的楼梯设计可能不同。每个房间里有一个 指示牌,指示牌上有一个数字 x,表示从这个房间开始 按逆时针方向选择第 x 个有楼梯的房 间(假定该房间的编号为 k) ,从该房间上楼,上楼后到达上一层的 k 号 房间。比如当前房 间的指示牌上写着 2, 则按逆时针方向开始尝试, 找到第 2 个有楼梯的房间, 从该房间上楼。 如果当前房间本身就有楼梯通向上层,该房间作为第一个有楼梯的房间。 寻宝说明书的最后用红色大号字体写着: “寻宝须知:帮助你找到每层上楼房间的指示 牌上的数字(即每 层第一个进入的房间内指示牌上的数字)总和为打开宝箱的密钥” 。 请帮助小明算出这个打开宝箱的密钥。 【输入】 输入文件为 treasure.in 第一行 2 个整数 N 和 M,之间用一个空格隔开。N 表示除了顶层外藏宝楼共 N 层楼, M 表示除顶层外每层楼有 M 个房间。 接下来 N*M 行,每行两个整数,之间用一个空格隔开,每行描述一个房间内的情况, 其中第(i-1)*M+j 行表示第 i 层 j-1 号房间的情况(i=1, 2, …, N;j=1, 2, … ,M) 。第一个整数 表示该房间是否有楼梯通往上一层 (0 表示没有,1 表示有) ,第二个整数表示指示牌上的数 字。注意,从 j 号房间的楼梯爬到上一层到达的房间 一定也是 j 号房间。 最后一行,一个整数,表示小明从藏宝楼底层的几号房间进入开始寻宝(注:房间编号 从 0 开始) 。 【输出】 输出文件名为 treasure.out。 输出只有一行,一个整数,表示打开宝箱的密钥,这个数可能会很大,请输 出对 20123 取模的结果即可。 【输入输出样例】 treasure.in 2 3 1 2 0 3 1 4 0 1 1 5 1 2 1
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2012年全国青少年信息学奥林匹克冬令营竞赛时间:2012年2月11日8:00-13:00注意:最终测试时,所有编译命令均不打开任何优化开关。

最小生成树【问题描述】给定无向带权连通图G,我们希望通过修改边的权值,使它的最小生成树唯一。

已知减小、增加一条边的权值的单位代价分别为a和b,且修改后的权值必须为非负整数。

例如,对某个图G,如果将一条边的权值减3、另一条边的权值加2之后,它的最小生成树唯一,则此时的代价之和是3a+2b。

试计算代价之和的最小值。

【输入格式】输入文件mst.in的第一行包含数据编号,对于第i个数据,第一行将包含字符串“mst i”。

第二行包含4个正整数n, m, a, b,分别表示图G顶点的个数、边的条数,以及对一条边的权值减1、加1的代价。

接下来m行,每行3个正整数x, y, w,表示顶点x和顶点y之间连有一条初始权值为w的边。

顶点由1至n编号。

【输出格式】输出文件mst.out仅包含一行,包含一个非负整数,即要求的最小值。

如果无需修改,即图本身的最小生成树就是唯一的,则输出0。

【样例输入】mst 04 5 2 31 2 11 3 12 3 12 4 23 4 2【样例输出】5【样例说明】将边(2, 4)的权值减1,边(2, 3)的权值加1之后,图G的最小生成树唯一,且此时的代价之和取到最小值。

【数据规模和附加文件】记忆中的水杉树【问题描述】江苏省常州高级中学是一所百年名校,这里萦绕着无数人难以忘怀的回忆。

Will记得,在他小的时候,常州高级中学改建以前,学校里有一片高大的水杉林,每到水杉落叶之时,针状的叶子会像毯子一样盖在地上,走在上面浪漫而又闲适。

那时,Will和同学们还喜欢用这些针叶,在水杉树下,玩“取叶子”的游戏。

游戏一开始,大家先将n片针叶平铺在地上。

接着,每一轮可以有一个同学选择一片针叶,按水平或者垂直方向将针叶移走(也就是平移到无穷远处)——当然,前提是移动过程中不被任何尚未移走的针叶所阻碍。

如果某一轮针叶的移动会被阻碍,那么这次移动就是非法的,是不被允许的。

n轮过后,当针叶都被移走时,游戏也就结束了。

针叶并不是任何时刻都可以被移动的。

当针叶很多的时候,判断每一轮中一片针叶是否可以按一个特定的方向移动是一件很麻烦的事情。

现在我们将地面抽象为平面直角坐标系,n片针叶抽象为平面上n条互不相交的线段,并将其从1到n编号,Will还将给出每一轮游戏中,他想要移动的针叶编号以及移动方向,请你帮助他:1)找出最早的一次非法移动出现在哪一轮;2)给出一个合法的移动方案完成这个游戏。

注意:在线段移动时仅端点接触不会造成阻碍,具体请参见样例。

【输入格式】输入文件memory.in的第一行包含一个正整数n,表示针叶的数量。

接下来n行,每行4个整数,描述针叶的位置信息。

其中第i行的整数为a i,b i,c i,d i,表示编号为i的针叶所抽象成的线段的端点为(a i, b i)和(c i, d i)。

接下来n行,每行2个整数,描述移动操作。

其中第i行的整数为p i,q i,表示第i轮移动的针叶编号为p i,方向为q i。

其中q i为一个0到3之间的整数,0表示向左平移(即x轴负方向),1表示向上平移(即y轴正方向),2表示向右平移,3表示向下平移。

输入数据保证:•所有线段长度为正,两两之间没有公共点,且不存在垂直或者水平的线段;•p1到p n恰好组成一个1到n的排列;•Will所给出的移动操作中一定存在非法移动;•n轮均合法的移动操作总是存在的。

输出文件memory.out一共包含n + 1行。

输出的第一行包含一个1到n之间的整数,表示最早出现非法移动的是哪一轮。

接下来n行,每行两个整数,内容同输入格式所述,描述一个合法的移动序列。

【评分标准】对于一个测试点:•如果非法移动判断正确,但是给出的移动方案错误,可以得到5分;•如果非法移动判断错误,但是给出的移动方案正确,可以得到5分;•如果非法移动的判断与给出的移动方案均正确,则可以得到10分;•否则,得0分。

注意:如果程序的输出格式不正确,将被直接判作0分。

【样例输入1】52 5 5 82 13 55 26 57 0 4 23 14 02 03 04 01 25 1【样例输出1】32 03 04 31 25 1【样例说明1】在Will给出的移动方案的第3轮中,编号为4的针叶向左移动会被编号为5的针叶阻碍。

4-1 1 2 313 5 9 810 10 15 1410 17 0 203 12 11 14 1【样例输出2】24 13 12 11 1【数据规模和约定】卡坦传奇【问题描述】栋栋最近迷上了一款名为卡坦岛的游戏,这个游戏在一个地图上进行,这个地图上每个时刻会产生一些资源,玩家的主要目标是获取资源和建造房屋。

栋栋最近正在研究游戏的策略,他希望从一些简单的情况入手。

为此,栋栋简化了游戏并给出了一些游戏的局面,希望你能帮助他找到这些游戏局面的优秀解法。

栋栋简化后的游戏是在一个由n × m 个方格组成的地图上进行的,如下图所示。

为了描述方便,我们用[r , c ]表示上图中的第r 行(1 ≤ r ≤ n )第c 列(1 ≤ c ≤ m )的方格。

[r , c ]的左上角坐标用(r –1, c –1)表示,右下角坐标用(r , c )表示(请注意圆括号和方括号的区别)。

每一个方格[r , c ]都有一个资源属性S [r , c ]和一个点数属性D [r , c ]。

其中资源属性S [r , c ]只能是1, 2, 3, 4中间的一个,而点数属性D [r , c ]可以是任意非负整数。

游戏玩家可以通过建造房屋来获得方格中产生的资源。

房屋有两种:普通房和城堡,都只能建在方格的顶点上。

要建造一个普通房需要的四种资源数量分别为h 1, h 2, h 3, h 4。

普通房可以升级为城堡,升级所需要的四种资源数量分别为l 1, l 2, l 3, l 4。

如果直接建造一个城堡,需要的四种资源数量分别为h 1+l 1, h 2+l 2, h 3+l 3, h 4+l 4。

在建造房屋时,任意两个房屋之间的直线距离必须严格大于1,且除首次外的建造位置必须与某个已建路段相连。

路段也需要由玩家建造,每个路段都是某个方格的一条边。

建造一个路段所需要的四种资源数量分别为a 1, a 2, a 3, a 4,且必须与已建造的路段或房屋有公共点。

路段可以重复建造,重复建造时花费的资源数量仍为a 1, a 2, a 3, a 4(重复建造路段一般是没有意义的,但规则允许这么做)。

每个时刻t ,游戏生成一个数字V t ,每个点数D [r , c ]为V t 的方格都会产生编号为S [r , c ]的资源,它四个角上的房屋(如果有的话)会得到相应的资源:任意普通房将获得1个S [r , c ]号资源,任意城堡将获得2个S [r , c ] 号资源。

这些资源都汇总到玩家手中。

例如,在一个资源属性为4的方格的四个角上,有一个普通房和一个城堡,则在时刻t ,如果这个方格的点数等于V t ,玩家会从这个方格获得3个资源4。

在同一时刻,一个房屋可能从多个方格得到资源。

在游戏开始时,玩家有4种资源数量分别为h 1, h 2, h 3, h 4。

利用这些资源,玩家可以在任意位置建造一个普通房。

[1, 1][1, 2][1, 3][1, 4][2, 1] [2, 2] [2, 3] [2, 4][3, 1] [3, 2] [3, 3] [3, 4](0, 1) (0, 2) (0, 3) (0, 4) (1, 4)(2, 4) (3, 4)任何时刻,玩家可以用K个相同的资源换成1个另一种资源,其中K是游戏规定的值。

比如他可以使用K个资源3换1个资源4。

现在,栋栋告诉了你地图和每个时刻游戏生成的数字V t,需要你在尽量少的时间内,使得城堡个数的两倍+ 普通房个数至少为10。

【输入格式】这是一道提交答案的试题,在你的目录下有10个输入文件catan1.in~ catan10.in。

输入的第一行包含两个整数n, m,分别表示方格的行数和列数。

接下来n行表示所有方格的资源属性,其中第r行有m个整数,第r行第c 列的整数表示S[r, c]。

接下来n行表示所有方格的点数属性,其中第r行有m个整数,第r行第c 列的整数表示D[r, c]。

接下来的一行包含4个整数h1, h2, h3, h4,分别表示建造普通房所需要的4种资源数量。

接下来的一行包含4个整数l1, l2, l3, l4,分别表示从普通房升级城堡所需要的4种资源数量。

接下来的一行包含4个整数a1, a2, a3, a4,分别表示建造路段所需要的4种资源数量。

接下来的一行包含1个整数K,表示玩家可以使用K个相同的资源替换成1个另一种资源。

接下来的一行包含1个整数G,表示给出的时间长度。

最后一行包含G个整数V1, V2, …, V G,分别表示每个时刻游戏生成的数字。

【输出格式】对于每一个输入文件,在目录下给出对应的输出文件catan*.out。

输出的第一行包含一个整数ans,表示建造足够数量的房屋(即城堡个数的两倍+ 普通房个数至少为10)所需要的时间长度。

接下来两行,表示游戏开始时玩家的方案。

其中第一行包含一个大写字母B 和两个整数x0, y0,表示初始时在(x0, y0)位置建造一个普通房。

其中第二行包含一个大写字母E。

接下来ans个部分,表示游戏的方案。

其中第i个部分包含若干行,表示在时刻i的资源产生后玩家的动作。

•若一行包含一个大写字母B和两个整数x, y,表示在(x, y)位置建造一个普通房。

•若一行包含一个大写字母C和两个整数x, y,表示在(x, y)位置建造一个城堡。

•若一行包含一个大写字母U和两个整数x, y,表示将(x, y)位置的普通房升级为城堡。

•若一行包含一个大写字母R和四个整数x1, y1, x2, y2,表示在(x1, y1)和(x2, y2)两个位置间建造一个路段。

其中(x1, y1)和(x2, y2)的距离必须为1。

•若一行包含一个大写字母X和两个整数p, q,表示将K个资源p换成一个资源q。

•若一行包含一个大写字母E,表示该部分的结束。

注意:你的输出文件的大小不能超过1MB。

【评分标准】对于每个测试点,如果你没有输出、输出不合法或在给定的时间G内不能建造足够数量的房屋,则得0分。

否则,对于每个数据,我们设有9个评分参数m2、…、m10。

•若ans ≤m10,得10分;•若m i+1 < ans≤m i,得i分;•若ans > m2,得1分。

【如何测试你的输出】在你的目录下有一个程序checker可以用来测试你的输出结果,你可以在终端中使用以下命令来检查你的输出结果:./checker N其中N为测试点的编号,例如,要测试第3个测试点可以使用./checker 3该程序会检测你的输出是否合法。

相关文档
最新文档