2008年宁波市信息学竞赛复赛试题(初中组)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
宁波市第23届中小学生计算机程序设计竞赛
决赛试题(初中组)
比赛时间:2008年4月12日上午9:00—12:00
关于竞赛中不同语言使用限制的说明
一.关于使用Pascal语言与编译结果的说明
1.对于Pascal语言的程序,当使用IDE和fpc编译结果不一致时,以fpc的编译结果为准。
2.允许使用数学库(uses math子句),以及ansistring。
但不允许使用编译开关(最后测试时pascal 的范围检查开关默认关闭:{$R-,Q-,S-}),也不支持与优化相关的选项。
二.关于C++语言中模板使用的限制说明
1.允许使用的部分:
标准容器中的布尔集合,迭代器,串,流。
相关的头文件:<bitset > <iterator > <string > <iostream >
2.禁止使用的部分:
序列:vector,list,deque
序列适配器:stack, queue, priority_queue
关联容器:map, multimap, set, multiset
拟容器:valarray
散列容器:hash_map, hash_set, hash_multimap, hash_multiset
所有的标准库算法
相关头文件:<vector > <list > <deque > <stack > <map > <set > <algorithm >
1.密码(password.pas/c/cpp)
【问题描述】
在浩浩茫茫的苍穹深处,住着上帝和他的神仆们,他们闲谈着下界的凡人俗事,对人世间表现的聪明智慧,大加赞赏。
今天他们正在观赏大地风光人情之际,忽然从遥远的东海之滨传来一阵欢笑声,上帝纵目望去,只见镇海中学内聚集了全宁波的中小学精英学生,他们要干什么呢?
原来他们都在做一种破译密码的游戏,人们发现:红色密码棒上的数字减去蓝色密码棒上的数字,就是开启天庭司粮库密码锁的密码。
如:135477 - 67122=68355,则68355就是一组有效的密码。
“太简单了!”人们高呼起来,继续探索着。
“这不过是早期的密码系统而已。
”上帝轻蔑地环顾神仆们说道。
可是,当人们演算了146201-3344=142857 后,上帝的神色愈来愈不对了,要知道,142857是一个特别的数字,这可是天庭的机密,是谁将这些机密泄露给世人的呢?
于是,上帝搬出一张牌,对司粮库主管得墨忒耳说:“将这张牌打出去,看看他们还逞能不?”
这是天庭的其中一张王牌,但平凡得很,只不过将密码的位数增大到不超过20000位而已。
可是难就难在你看到文件:password.in中的两个数后,必须在1秒钟内将密码输出到文件:password.out中,否则这组密码就失效了。
上帝还是仁慈的,没有将更难的牌打出来,他想把天庭的粮食恩赐人间,但他绝不会将好处给那些不动脑子的人。
现在请你解开天庭司粮库密码锁的密码,帮助人们获得天庭恩赐的粮食。
【输入】
输入文件password.in有二行,每行有一个正整数。
【输出】
输出文件password.out只有一行,该行只有一个正整数,为输入的两个正整数中较大者减去较小者的差值。
【数据限制】
30%的数据,二个数均小于2×109。
50%的数据,二个数均小于1×1016。
100%的数据,二个数均小于1×1020000。
70%的数据,第一个数大于第二个数。
2.宝石(gem.pas/c/cpp)
【问题描述】
见上帝动了侧隐之心,天后也想显示一下慈悲之怀,随即从身上解下腰带,让身边的美神维纳斯拿到固天圈上去试试,如果腰带触碰到固天圈上镶嵌着的连续的宝石,就将这些宝石送给人们。
维纳
斯想让腰带触碰到更多的宝石,可要在短短的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 只有一个正整数,为腰带能触碰到的宝石价值和的最大值。
【数据限制】
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。
3.马(horse.pas/c/cpp)
【问题描述】 战神阿瑞斯听说2008年在中华大地上,将举行一届规模盛大的奥林匹克运动会,心中顿觉异常兴奋,他召集了n 位天将,骑着他们自己的天马,准备在广阔的天空上,举行一场空前的天马天将列队表演。
天马在熟悉了自己的天将以后,已经是将马合一,不能分开了。
战神阿瑞斯想在这n 匹天马和n 个天将中选出尽可能多的天马和天将,组成一个队列,该队列必须同时满足:
(1)队列中天将的高度加上天马的高度之和,后一个应该比前一个大。
(2)队列中后一个天马高度不低于前一个天马高度,队列中后一个天将高度不低于前一个天将高度。
应该怎样选才能使队列的长度最大呢?你能给战神阿瑞斯参谋参谋吗? 【输入】
输入文件horse.in 的第一行只有一个正整数n ,表示共有n 匹马和n 个天将。
第二行共有n 个正实数,分别表示每匹天马的高度,第i 个数表示第i 匹天马的高度。
这n 个数之间互相以一个空格分隔。
【样例输入2】 3 11 5 9 5 11 4 6 5 【样例输出2】 11
【样例输入1】 3 11 2 9 5 11 4 6 5 【样例输出1】 9
第三行共有n个正实数,分别表示每个天将的身高,第i个数表示第i个天将的高度。
这n个数之间互相以一个空格分隔。
【输出】
输出文件horse.out中只有一行,该行只有一个正整数,为符合条件的最长队列长度。
【样例输入】
10
2.7612 2.9235 2.8437 2.6437 2.8034 2.6893 2.8801 2.7245 2.6021 2.9603
2.8412 2.6412 2.7256 2.6834 2.6023 2.7678 2.9256 2.9678 2.8834 2.8090
【样例输出】
4
【样例说明】
当依次选择第4组、第6组、第1组,第7组天将和天马时,得到人马组合数最多的队列,该队列中天马身高依次递增,天将身高也依次递增。
【数据限制】
30%的数据,1≤n≤20。
100%的数据,1≤n≤9000。
100%的数据,天马与天将的高度均大于2.6米而小于3米,且精确到四位小数。
50%的数据,马与马之间高度均不同,将与将之间高度均不同。
4.导游(guide.pas/c/cpp)
【问题描述】
宁波市的中小学生们在镇海中学参加程序设计比赛之余,热情的主办方邀请同学们参观镇海中学内的各处景点,已知镇海中学内共有n处景点。
现在有n位该校的学生志愿承担导游和讲解任务。
每个学生志愿者对各个景点的熟悉程度是不同的,如何将n位导游分配至n处景点,使得总的熟悉程度最大呢?要求每个景点处都有一个学生导游。
【输入】
输入文件guide.in中有若干行:
第一行只有一个正整数n,表示有n个景点和n个学生导游。
第二行至第n+1行共n行,每行有n个以空格分隔的正整数。
第i+1行的第j个数k(1≤k≤1000),表示第i个学生导游对景点j的熟悉程度为k。
【输出】
输出文件guide.out只有一行,该行只有一个正整数,表示求得的熟悉程度之和的最大值。
【样例输入】
3
10 6 8
9 2 3
1 7 2
【样例输出】
24
【样例说明】
第1个学生负责第3个景点,第2个学生负责第1个景点,第3个学生负责第2个景点时,熟悉程度总和为24,达到最大值。
【数据限制】50%的数据,1≤n≤9;100%的数据,1≤n≤17。