宁波市第23届中小学生计算机程序设计竞赛决赛试题(初中组) 共4页 第1页
宁波市第23届中小学生计算机程序设计竞赛
决赛试题(初中组)
比赛时间:2008年4月12日上午9:00—12:00
试题名称 输入文件名 输出文件名 内存限制 时限 密码 password.in password.out 128MB 1秒 宝石 gem.in gem.out 128MB 1秒 马 horse.in horse.out 128MB 1秒 礼物 guide.in guide.out 128MB 1秒 关于竞赛中不同语言使用限制的说明
一.关于使用Pascal语言与编译结果的说明
1.对于Pascal语言的程序,当使用IDE和fpc编译结果不一致时,以fpc的编译结果为准。 2.允许使用数学库(uses math子句),以及ansistring。但不允许使用编译开关(最后测试时pascal的范围检查开关默认关闭:{$R-,Q-,S-}),也不支持与优化相关的选项。 二.关于C++语言中模板使用的限制说明
1.允许使用的部分:
标准容器中的布尔集合,迭代器,串,流。
相关的头文件:
序列:vector,list,deque
序列适配器:stack, queue, priority_queue 关联容器:map, multimap, set, multiset 拟容器:valarray
散列容器:hash_map, hash_set, hash_multimap, hash_multiset 所有的标准库算法 相关头文件:
? 宁波市计算机学会,2008
宁波市第23届中小学生计算机程序设计竞赛决赛试题(初中组) 共4页 第2页
1.密码(password.pas/c/cpp)
【问题描述】
在浩浩茫茫的苍穹深处,住着上帝和他的神仆们,他们闲谈着下界的凡人俗事,对人世间表现的聪明智慧,大加赞赏。今天他们正在观赏大地风光人情之际,忽然从遥远的东海之滨传来一阵欢笑声,上帝纵目望去,只见镇海中学内聚集了全宁波的中小学精英学生,他们要干什么呢?
原来他们都在做一种破译密码的游戏,人们发现:红色密码棒上的数字减去蓝色密码棒上的数字,就是开启天庭司粮库密码锁的密码。
如:135477 - 67122=68355,则68355就是一组有效的密码。 “太简单了!”人们高呼起来,继续探索着。 “这不过是早期的密码系统而已。”上帝轻蔑地环顾神仆们说道。 可是,当人们演算了 146201-3344=142857 后,上帝的神色愈来愈不对了,要知道,142857是一个特别的数字,这可是天庭的机密,是谁将这些机密泄露给世人的呢?
于是,上帝搬出一张牌,对司粮库主管得墨忒耳说:“将这张牌打出去,看看他们还逞能不?” 这是天庭的其中一张王牌,但平凡得很,只不过将密码的位数增大到不超过20000位而已。可是难就难在你看到文件:password.in中的两个数后,必须在1秒钟内将密码输出到文件:password.out中,否则这组密码就失效了。
上帝还是仁慈的,没有将更难的牌打出来,他想把天庭的粮食恩赐人间,但他绝不会将好处给那些不动脑子的人。现在请你解开天庭司粮库密码锁的密码,帮助人们获得天庭恩赐的粮食。 【输入】
输入文件password.in有二行,每行有一个正整数。 【输出】
输出文件password.out只有一行,该行只有一个正整数,为输入的两个正整数中较大者减去较小者的差值。
【样例输入1】 【样例输入2】 135477 67122 67122 135477 【样例输出1】 【样例输出2】 68355 68355 【数据限制】
30%的数据,二个数均小于2×109。 50%的数据,二个数均小于1×1016。 100%的数据,二个数均小于1×1020000。 70%的数据,第一个数大于第二个数。
2.宝石(gem.pas/c/cpp)
【问题描述】
见上帝动了侧隐之心,天后也想显示一下慈悲之怀,随即从身上解下腰带,让身边的美神维纳斯拿到固天圈上去试试,如果腰带触碰到固天圈上镶嵌着的连续的宝石,就将这些宝石送给人们。维纳
? 宁波市计算机学会,2008
宁波市第23届中小学生计算机程序设计竞赛决赛试题(初中组) 共4页 第3页
斯想让腰带触碰到更多的宝石,可要在短短的1秒钟之内解决问题,也感到力不从心,你能帮帮她吗?
固天圈上按顺时针方向标有1、2、??、t共t个点,当然第t点顺时针方向的下一个点是第1点。相邻两点之间的距离均为1厘米。
在这t个点中有n个点处镶嵌有宝石,每个宝石均有一定的价值。以长度为k厘米的腰带覆盖至固天圈上,怎样才能获得最多价值的宝石呢? 【输入】
输入文件gem.in 有三行:
第1行有三个正整数n、t、k(互相之间用一个空格分隔),表示有n个位置上有宝石,固天圈上的最大标号为t,腰带长度为k厘米。
第2行有n个不超过t的正整数,表示镶嵌着的宝石的位置,互相之间用一个空格分隔。 第3行有n个不超过10000的正整数,表示对应位置上宝石的价值,互相之间用一个空格分隔。 【输出】
输出文件gem.out只有一个正整数,为腰带能触碰到的宝石价值和的最大值。 【样例输入1】
3 11 2
9 5 11
4 6 5
【样例输出1】 9 【数据限制】
30%的数据,1≤n≤100,1≤t≤1000,1≤k≤10。 70%的数据,1≤n≤2000,1≤t≤3000,1≤k≤200。
100%的数据,1≤n≤100000,1≤t≤100000000,1≤k≤100000。
【样例输入2】 3 11 5 9 5 11 4 6 5 【样例输出2】 11
3.马(horse.pas/c/cpp)
【问题描述】 战神阿瑞斯听说2008年在中华大地上,将举行一届规模盛大的奥林匹克运动会,心中顿觉异常兴奋,他召集了n位天将,骑着他们自己的天马,准备在广阔的天空上,举行一场空前的天马天将列队表演。天马在熟悉了自己的天将以后,已经是将马合一,不能分开了。战神阿瑞斯想在这n匹天马和n个天将中选出尽可能多的天马和天将,组成一个队列,该队列必须同时满足:
(1)队列中天将的高度加上天马的高度之和,后一个应该比前一个大。
(2)队列中后一个天马高度不低于前一个天马高度,队列中后一个天将高度不低于前一个天将高度。
应该怎样选才能使队列的长度最大呢?你能给战神阿瑞斯参谋参谋吗? 【输入】
输入文件horse.in 的第一行只有一个正整数n,表示共有n匹马和n个天将。
第二行共有n个正实数,分别表示每匹天马的高度,第i个数表示第i匹天马的高度。这n个数之间互相以一个空格分隔。
? 宁波市计算机学会,2008