百度之星程序设计大赛试题.docx
- 文档编号:9242469
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:63
- 大小:53.47KB
百度之星程序设计大赛试题.docx
《百度之星程序设计大赛试题.docx》由会员分享,可在线阅读,更多相关《百度之星程序设计大赛试题.docx(63页珍藏版)》请在冰豆网上搜索。
XX之星程序设计大赛试题
2005年XX之星程序设计大赛试题初赛题目
第一题(共四题100分):
连续正整数(10分)
题目描述:
一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如:
15=1+2+3+4+5
15=4+5+6
15=7+8
请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。
输入数据:
一个正整数,以命令行参数的形式提供给程序。
输出数据:
在标准输出上打印出符合题目描述的全部正整数序列,每行一个序列,每个序列都从该序列的最小正整数开始、以从小到大的顺序打印。
如果结果有多个序列,按各序列的最小正整数的大小从小到大打印各序列。
此外,序列不允许重复,序列内的整数用一个空格分隔。
如果没有符合要求的序列,输出“NONE”。
例如,对于15,其输出结果是:
12345
456
78
对于16,其输出结果是:
NONE
评分标准:
程序输出结果是否正确。
解:
设输入数为M,输出成功序列数个数为N。
1判断M的奇偶性,
2.M为奇数,必定存在N=2的解;M/N若等于K(正整数)+0.5,则此解存在;
3.M为偶数,必定不存在N=2的解,M/N若等于K+0.5,则此解存在。
4.输出解。
第二题(共四题100分):
重叠区间大小(20分)
题目描述:
请编写程序,找出下面“输入数据及格式”中所描述的输入数据文件中最大重叠区间的大小。
对一个正整数n,如果n在数据文件中某行的两个正整数(假设为A和B)之间,即A<=n<=B或A>=n>=B,则n属于该行;如果n同时属于行i和j,则i和j有重叠区间;重叠区间的大小是同时属于行i和j的整数个数。
例如,行(1020)和(1225)的重叠区间为[1220],其大小为9;行(2010)和(128)的重叠区间为[1012],其大小为3;行(2010)和(2030)的重叠区间大小为1。
输入数据:
程序读入已被命名为input.txt的输入数据文本文件,该文件的行数在1到1,000,000之间,每行有用一个空格分隔的2个正整数,这2个正整数的大小次序随机,每个数都在1和2^32-1之间。
(为便于调试,您可下载测试input.txt文件,实际运行时我们会使用不同内容的输入文件。
)
输出数据:
在标准输出上打印出输入数据文件中最大重叠区间的大小,如果所有行都没有重叠区间,则输出0。
评分标准:
程序输出结果必须正确,内存使用必须不超过256MB,程序的执行时间越快越好。
解:
第三题(共四题100分):
字符串替换(30分)
题目描述:
请编写程序,根据指定的对应关系,把一个文本中的字符串替换成另外的字符串。
输入数据:
程序读入已被命名为text.txt和dict.txt的两个输入数据文本文件,text.txt为一个包含大量字符串(含中文)的文本,以whitespace为分隔符;dict.txt为表示字符串(s1)与字符串(s2)的对应关系的另一个文本(含中文),大约在1万行左右,每行两个字符串(即s1和s2),用一个\t或空格分隔。
dict.txt中各行的s1没有排序,并有可能有重复,这时以最后出现的那次s1所对应的s2为准。
text.txt和dict.txt中的每个字符串都可能包含除whitespace之外的任何字符。
text.txt中的字符串必须和dict.txt中的某s1完全匹配才能被替换。
(为便于调试,您可下载测试text.txt和dict.txt文件,实际运行时我们会使用不同内容的输入文件。
)
输出数据:
在标准输出上打印text.txt被dict.txt替换后了的整个文本。
评分标准:
程序输出结果必须正确,内存使用越少越好,程序的执行时间越快越好。
第四题(共四题100分):
低频词过滤(40分)
题目描述:
请编写程序,从包含大量单词的文本中删除出现次数最少的单词。
如果有多
个单词都出现最少的次数,则将这些单词都删除。
输入数据:
程序读入已被命名为corpus.txt的一个大数据量的文本文件,该文件包含英
文单词和中文单词,词与词之间以一个或多个whitespace分隔。
(为便于调试,您可下载
测试corpus.txt文件,实际运行时我们会使用不同内容的输入文件。
)
输出数据:
在标准输出上打印删除了corpus.txt中出现次数最少的单词之后的文本(
词与词保持原来的顺序,仍以空格分隔)。
评分标准:
程序输出结果必须正确,内存使用越少越好,程序的执行时间越快越好。
2005年XX之星程序设计大赛试题总决赛题目
题目描述:
八方块移动游戏要求从一个含8个数字(用1-8表示)的方块以及一个空格方块(用0表示)的3x3矩阵的起始状态开始,不断移动该空格方块以使其和相邻的方块互换,直至达到所定义的目标状态。
空格方块在中间位置时有上、下、左、右4个方向可移动,在四个角落上有2个方向可移动,在其他位置上有3个方向可移动。
例如,假设一个3x3矩阵的初始状态为:
803
214
765
目标状态为:
123
804
765
则一个合法的移动路径为:
803813813013103123
214=>204=>024=>824=>824=>804
765765765765765765
另外,在所有可能的从初始状态到目标状态的移动路径中,步数最少的路径被称为最短路径;在上面的例子中,最短路径为5。
如果不存在从初试状态到目标状态的任何路径,则称该组状态无解。
请设计有效的(细节请见评分规则)算法找到从八方块的某初试状态到某目标状态的所有可能路径中的最短路径,并用C/C++实现。
输入数据:
程序需读入已被命名为start.txt的初始状态和已被命名为goal.txt的目标状态,这两个文件都由9个数字组成(0表示空格,1-8表示8个数字方块),每行3个数字,数字之间用空格隔开。
输出数据:
如果输入数据有解,输出一个表示最短路径的非负的整数;如果输入数据无解,输出-1。
自测用例:
如果输入为:
start.txt和goal.txt,则产生的输出应为:
5
又例,如果用
784
356
102
替换start.txt中的内容,则产生的输出应为:
21
评分规则:
1)我们将首先使用和自测用例不同的10个start.txt以及相同的goal.txt,每个测试用例的运行时间在一台IntelXeon2.80GHz4CPU/6G内存的Linux机器上应不超过10秒(内存使用不限制),否则该用例不得分;
2)每个选手的总分(精确到小数点后6位)=10秒钟内能产生正确结果的测试用例数量x10+(1/产生这些正确结果的测试用例的平均运行毫秒);
3)如果按此评分统计仍不能得出总决赛将决出的一、二、三等奖共计九名获奖者,我们将先设N=2,然后重复下述过程直至产生最高的9位得分:
用随机生成的另外10个有解的start.txt再做测试,并对这10*N个测试用例用2)中公式重新计算总分,N++。
2006年XX之星程序设计大赛试题初赛题目
2006年XX之星程序设计大赛初赛题目1
饭团的烦恼
“午餐饭团“是XX内部参与人数最多的民间组织。
同一个部门的,同一间大学的,同一年出生的,用同一种型号电脑的,员工们总是以各种理由,各种借口组织各种长久的,临时的饭团。
参加饭团,不仅可以以优惠的价格尝到更加丰富的菜式,还可以在吃饭的时候和同事们唠唠嗑,吹吹水,增进感情。
但是,随着XX的员工越来越多,各个饭团的管理随即变得烦杂。
特别是为了照顾员工们越来越挑剔的胃口,饭团的点菜负责人背负的责任越来越大。
现在,这个重担落在XX之星的肩上,因为,你们将要为所有的XX饭团设计一个自动点菜的算法。
饭团点菜的需求如下:
1.经济是我们要考虑的一个因素,既要充分利用XX员工的午餐补助,又不能铺张浪费。
因此,我们希望最后的人均费用越接近12元越好。
2.菜式丰富是我们要考虑的另一个因素。
为简单起见,我们将各种菜肴的属性归结为荤菜,素菜,辛辣,清淡,并且每个菜只能点一次。
3.请紧记,XX饭团在各大餐馆享受8折优惠。
输入数据描述如下:
第一行包含三个整数N,M,K(0 紧接着N行,每行的格式如下: 菜名(长度不超过20个字符)价格(原价,整数)是否荤菜(1表示是,0表示否)是否辛辣(1表示是,0表示否) 例: 水煮鱼3011 紧接着是abcd四个整数,分别表示需要点的荤菜,素菜,辛辣,清淡菜的数目。 输出数据: 对于每一测试数据,输出数据包含M+1行,前M行每行包含一个菜名(按菜名在原菜单的顺序排序)。 第M+1行是人均消费,结果保留两位小数。 说明: 1.结果菜单的数目应该恰好为M,荤菜,素菜,辛辣,清淡菜的数目恰好为a,b,c,d。 在满足这样的前提下,选择人均消费最接近12元的点菜方案。 题目数据保证有且仅有一个解。 2.每组测试数据的结果用一个空行隔开。 末尾不要有多余的空行。 输入样例 322 水煮鱼3011 口水鸡1811 清炖豆腐1200 1111 输出样例 口水鸡 清炖豆腐 12.00 时间要求: 1S之内 2006年XX之星程序设计大赛初赛题目2 题目名称: 蝈蝈式的记分 内容描述: 蝈蝈小朋友刚刚学会了0-9这十个数字,也跟爸爸妈妈来参加XX每周进行的羽毛球活动。 但是他还没有球拍高,于是大人们叫他记录分数。 聪明的蝈蝈发现只要记录连续得分的情况就可以了,比如用“324”可以表示一方在这一局中连得三分后,输了两分,接着又连得到四分。 可是,后来大人们发现蝈蝈只会用0-9这十个数字,所以当比赛选手得分超过9的时候,他会用一个X来表示10完成记分。 但问题是,当记录为“X35”的时候,蝈蝈自己也记不起来是一方连续得到十三分后,再输五分;还是先赢十分输三分再赢五分。 因为XX内部就要开始进行羽毛球联赛了,要先摸清大家的实力才好分组比赛呢~于是,大人们想知道以前每局的比分是怎样的,以及谁获得了胜利。 要是遇到了根据比赛记录无法确认比赛进程的情况,也要输出相应的提示哦。 需要帮蝈蝈进一步说明的是,比赛是五局三胜的,每局先获得二十一分的为胜,但是胜方必须领先对手两分或以上,否则必须继续比赛直到一方超出对手两分为止,比分多的一方获胜。 任何一方先获得三局的胜利后就获得胜利,比赛也相应的结束。 而且蝈蝈保证是完整的无多余信息的记录了比赛。 输入数据: 以point.in为输入文件,文件中首行只有一个整数M,表示蝈蝈记录了多少场比赛的分数。 每场比赛用两行记录,第一行是一个整数N(N<=1000)表示当前这个记录中有多少个字符,第二行就是具体的N个字符表示记录的分数。 输出数据: 相应的内容将输出到point.out文件中,对应每一个分数记录,输出相应的每局分数,每局分数都使用两个整数表示,表示两个选手的得分,中间用": "分隔开;每组分数记录间使用一个空行分隔开。 如果相应的比赛结果无法预测的时候,以”Unknown“一个单词独占一行表示。 输入和输出结果数据样例: SampleInput: 3 23 973624783279X22121X1X11 25 9385483984XXXX2XXXX284924 43 7777734567654213579753130993932111515151551 SampleOutput: 21: 17 24: 22 21: 3 Unknown 21: 14 20: 22 21: 23 21: 16 21: 9 2006年XX之星程序设计大赛初赛题目3 变态的比赛规则 为了促进各部门员工的交流,XX(baidu)举办了一场全公司范围内的"拳皇友谊赛",负责组织这场比赛的是XX的超级"拳皇"迷W.Z.W.Z不想用传统的淘汰赛或者循环赛的方式,而是自己制定了一个比赛规则。 由于一些员工(比如同部门或者相临部门员工)平时接触的机会比较多,为了促进不同部门之间的交流,W.Z希望员工自己组成不同组。 不同组之间的每两个人都会进行一场友谊赛而同一组内的人则之间不会打任何比赛。 比如4个人,编号为1--4,如果分为两个组并且1,2一个组,3,4一个组,那么一共需要打四场比赛: 1vs3,1vs4,2vs3,2vs4.而如果是1,2,3一组,4单独一组,那么一共需要打三场比赛: 1vs4,2vs4,3vs4. 很快W.Z意识到,这样的比赛规则可能会让比赛的场数非常多。 W.Z想知道如果有N个人,通过上面这种比赛规则,总比赛场数有可能为K场吗? 比如3个人,如果只分到一组则不需要比赛,如果分到两组则需要2场比赛,如果分为三组则需要3场比赛。 但是无论怎么分都不可能只需要1场比赛。 相信作为编程高手的你一定知道该怎么回答这个问题了吧? 那么现在请你帮助W.Z吧。 输入 每行为一组数据,包含两个数字N,K。 (0 输出 对输入的N,K如果N个员工通过一定的分组方式可能会一共需要K场比赛,则输出"YES",否则输出"NO",每组数据占一行。 所有的输入输出均为标准输入输出。 例子 输入文件: 20 21 31 32 输出: YES YES NO YES 2006年XX之星程序设计大赛初赛题目4 剪刀石头布 N个小孩正在和你玩一种剪刀石头布游戏。 N个小孩中有一个是裁判,其余小孩分成三组(不排除某些组没有任何成员的可能性),但是你不知道谁是裁判,也不知道小孩们的分组情况。 然后,小孩们开始玩剪刀石头布游戏,一共玩M次,每次任意选择两个小孩进行一轮,你会被告知结果,即两个小孩的胜负情况,然而你不会得知小孩具体出的是剪刀、石头还是布。 已知各组的小孩分别只会出一种手势(因而同一组的两个小孩总会是和局),而裁判则每次都会随便选择出一种手势,因此没有人会知道裁判到底会出什么。 请你在M次剪刀石头布游戏结束后,猜猜谁是裁判。 如果你能猜出谁是裁判,请说明最早在第几次游戏结束后你就能够确定谁是裁判。 输入格式: 输入文件包含多组测试数据。 每组测试数据第一行为两个整数N和M(1≤N≤500,0≤M≤2000),分别为小孩的个数和剪刀石头布游戏进行的次数。 接下来M行,每行两个整数且中间以一个符号隔开。 两个整数分别为进行游戏的两个小孩各自的编号,为小于N的非负整数。 符号的可能值为“=”、“>”和“<”,分别表示和局、第一个小孩胜和第二个小孩胜三种情况。 输出格式: 每组测试数据输出一行,若能猜出谁是裁判,则输出身为裁判的小孩的编号,并输出在第几次游戏结束后就能够确定谁是裁判。 如果无法确定谁是裁判,或者发现剪刀石头布游戏的胜负情况不合理(即无论谁是裁判都会出现矛盾),则输出相应的信息。 具体输出格式请参考输出样例。 输入样例: 33 0<1 1<2 2<0 35 0<1 0>1 1<2 1>2 0<2 44 0<1 0>1 2<3 2>3 10 输出样例: Cannotdetermine Player1canbedeterminedtobethejudgeafter4lines Impossible Player0canbedeterminedtobethejudgeafter0lines 说明: 共有5个测试数据集,每个测试数据集为一个输入文件,包含多组测试数据。 每个测试数据集从易到难分别为5、10、15、30和40分,对每个测试数据集分别执行一次程序,每次必须在运行时限3秒内结束程序并输出正确的答案才能得分。 所有数据均从标准输入设备(stdin/cin)读入,并写出到标准输出设备(stdout/cout)中。 五个测试数据集中输入N分别不大于20、50、100、200和500,各有10组测试数据。 2006年XX之星程序设计大赛初赛题目5 座位调整 题目描述: XX办公区里到处摆放着各种各样的零食。 XX人力资源部的调研发现,员工如果可以在自己喜欢的美食旁边工作,工作效率会大大提高。 因此,XX决定进行一次员工座位的大调整。 调整的方法如下: 1.首先将办公区按照各种零食的摆放分成N个不同的区域。 (例如: 可乐区,饼干区,牛奶区等等)。 2.每个员工对不同的零食区域有不同的喜好程度(喜好程度度的范围为1—100的整数,喜好程度越大表示该员工越希望被调整到相应的零食区域)。 3.由于每个零食区域可以容纳的员工数量有限,人力资源部希望找到一个最优的调整方案令到总的喜好程度最大。 数据输入: 第一行包含两个整数N,M,(1<=N,M<=300)。 分别表示N个区域和M个员工。 第二行是N个整数构成的数列a,其中a[i]表示第i个区域可以容纳的员工数,(1<=a[i]<=M,a[1]+a[2]+..+a[N]=M)。 紧接着是一个M*N的矩阵P,P(i,j)表示第i个员工对第j个区域的喜好度。 答案输出: 对于每个测试数据,输出可以达到的最大的喜好程度。 输入样例: 33 111 1005025 1005025 1005025 输出样例: 175 数据解释: 此数据只存在一种安排方法,三个员工分别安置在三个区域。 最终的喜好程度为100+50+25=175 2006年XX之星程序设计大赛初赛题目6 XX语言翻译机 时限1s XX的工程师们是非常注重效率的,在长期的开发与测试过程中,他们逐渐创造了一套他们独特的缩率语。 他们在平时的交谈,会议,甚至在各中技术文档中都会大量运用。 为了让新员工可以更快地适应XX的文化,更好地阅读公司的技术文档,人力资源部决定开发一套专用的翻译系统,把相关文档中的缩率语和专有名词翻译成日常语言。 输入数据: 输入数据包含三部分 1.第一行包含一个整数N(N<=10000),表示总共有多少个缩率语的词条。 2.紧接着有N行的输入,每行包含两个字符串,以空格隔开。 第一个字符串为缩率语(仅包含大写英文字符,长度不超过10),第二个字符串为日常语言(不包含空格,长度不超过255). 3.从第N+2开始到输入结束为包含缩略语的相关文档。 (总长度不超过1000000个字符) 输出数据: 输出将缩率语转换成日常语言的文档。 (将缩率语转换成日常语言,其他字符保留原样) 输入例子: 6 PS门户搜索部 NLP自然语言处理 PM产品市场部 HR人力资源部 PMD产品推广部 MD市场发展部 XX的部门包括PS,PM,HR,PMD,MD等等,其中PS还包括NLP小组。 输出例子: XX的部门包括门户搜索部,产品市场部,人力资源部,产品推广部,市场发展部等等,其中门户搜索部还包括自然语言处理小组。 注意: 1.输入数据中是中英文混合的,中文采用GBK编码。 2.为保证答案的唯一性,缩率语的转换采用正向最大匹配(从左到右为正方向)的原则。 请注意输入例子中PMD的翻译。 2006年XX之星程序设计大赛试题复赛题目 2006年XX之星程序设计大赛复赛题目1 另类杀人游戏 周末的晚上,XX的员工们总喜欢聚集在公司的会议室玩杀人游戏。 从1警1匪到n警n匪,他们尝试了几乎所有流行的杀人游戏规则。 终于有一天,连最热衷杀人游戏,“杀人”不眨眼的Austin也开始对无休止的辩论感到厌烦。 于是,他决定改变他的一贯作风,他开始变成了一个“杀人不睁眼”的杀手。 如何做到杀人不睁眼呢? Austin早已构思好他的杀人计划: 1.N个人(包括Austin)坐成一圈玩杀人游戏,按顺时针编号1,2,3,4。 。 。 。 。 2.Austin从1号开始顺时针开始数到第m号就杀掉第一个人。 被杀掉的人要退出游戏。 3.如果第m个人恰好是Austin自己,他就杀掉他顺时针方向的下一个人。 4.Austin从被杀的人的下一个顺时针数m个人,把第m个杀掉。 5.重复2-4,直至杀掉所有人。 Austin把这个杀人计谋告诉了法官小k,他便可以闭起眼睛杀人啦。 作为一个正直善良的法官,小k当然不能让残忍的Austin得逞,于是,她偷偷把Austin的杀人计划告诉了作为警察的你,聪明的XX之星。 现在,你的任务是活到最后,与Austin单挑。 输入: 第一个行包含一个整数T,表示有T组测试数据。 对于每组测试数据: 三个整数 N,M,T,(3<=N<=10000,1<=M,T<=10000)分别表示参与游戏的人数,Austin每隔M个人会杀掉一人,Austin初始位置的标号。 输出: 每个测数数据输出一个整数。 你需要选择的初始位置的序号,以确保最后剩下的两个人是你与Austin。 输入例子: 2 741 741 输出例子 5 5 例子说明: 杀人顺序为427635,所以5是你要选择的位置。 2006年XX之星程序设计大赛复赛题目2 空中飞猴 马戏团里新来了一只很特别的小猴子皮皮——
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 百度 程序设计 大赛 试题
![提示](https://static.bdocx.com/images/bang_tan.gif)