2014合肥市第三十一届青少年信息学奥林匹克竞赛(小学组)试题
本试卷包含五个编程题(短信计费、数据分析、地图测绘、积木搭建),每题满分均为100分。考试时间为150分钟,请务必严格按照题目要求完成各题编程,并在指定路径下建立文件夹并提交代码及结果文件。
第一题 短信计费
(message.pas/c/cpp)
输入为短信条数及每条短信字数,需计算总费用(每70字一条短信)。
第二题 数据分析
(median.pas/c/cpp)
根据给定数据计算中位数,在偶数个数据时取中间两数之和的整数部分作为结果。
第三题 地图测绘
(map.pas/c/cpp)
根据地形图统计水域面积(由“*”围成的闭合区域中的“0”数量)。
第四题 积木搭建
(block.pas/c/cpp)
调整积木高度以使所有城堡高度一致且尽可能高。
| 中文题目名称 | 短信计费 | 数据分析 | 地图测绘 | 积木搭建 |
|---|---|---|---|---|
| 源程序名 | message | median | map | block |
| 输入文件名 | message .in | median .in | map.in | block.in |
| 输出文件名 | message .out | median .out | map.out | block.out |
| 满分 | 100 | 100 | 100 | 100 |
| 测试点数目 | 10 | 10 | 10 | 10 |
| 是否有部分分 | 否 | 否 | 否 | 否 |
| 内存限制 | 128M | 128M | 128M | 128M |
| 每个测试点时限 | 1秒 | 1秒 | 1秒 | 1秒 |
一、题目概况
二、注意事项
考试时间为150分钟。
务必看清题目,严格按照所要求的格式输入、输出。
在程序调试过程中,请首先参考题目中提供的示例数据作为基础;随后建议您自行设计多组测试用例来进行调试工作
每题一般有10个测试点,测试有严格的时间限制,请尽可能优化算法。
命名规则:
(1)每题都规定了该题的英文名称。
(2)程序文件和数据文件的主文件名都是该题的英文名字。
(3)程序文件扩展名采用语言环境的默认扩展名。
(4)数据文件都是文本文件,输入和输出文件的扩展名分别是.in和.out。
该程序能够从输入数据源获取相关信息,并严格按照指定的数据格式处理并传递处理结果至指定的目标存储空间中进行保存。这些输入和输出的数据文件均位于与该程序处于同一目录的空间内,并且因为该程序运行时所处的工作目录位置不可预知而采取了相应的保护措施以防止路径信息泄露以确保系统的安全性。
当竞赛结束时,请确保将所有参赛者的信息整理好,并在此基础上创建一个名为"考生准考证号"的文件夹。随后,请将所有已完成程序及其执行结果复制至前述创建好的"考生准考证号"文件夹中。
第一题 短信计费
(message.pas/c/cpp)
【问题描述】
通过手机发送短信,在不同运营商之间进行短信发送操作时,每条基本费用定为0.1元(包括不超过70个字的内容)。如果您的某条信息超过了这一字符限制,则多数手机系统会自动将其拆分成多条不超过70个字的短信发送出去。为了计算方便起见,请统计您上个月发送的所有短信的总费用。
【输入格式】
第一行是一个少于501位的正整数值n。
从第二行到第(N+1) 行每个数字代表一条短信的信息。
每条短信的内容长度不会超过489字符。
【输出格式】
当月短信总资费,单位为元,精确到小数点后1位。
【样例输入1】
10
39
49
42
61
44
147
42
72
35
46
【样例输出1】
1.3
第二题 数据分析
(median.pas/c/cpp)
【问题描述】
在数据分析过程中,除了平均值之外还有另一种指标来代表数据集的中心趋势。这种指标被称为中位数。具体而言,在将一组数据从小到大排序后,在这串序列当中处于中间位置的那个数值即为该组数据的中位数值。例如,在{1,2,…5}这样一个有序数组列当中有五个元素时,则第三个位置就是该组数据的中间值即第三个数值就是其中间的那个数值即第三个数值就是其中间的那个数值即第三个数值就是其中间的那个数值即第三个数值就是其中间的那个数值即第三个数值就是其中间的那个数值即第三个数值就是其中间的那个值
【输入格式】
程序读取第一行为一个整数N(其中N≤30,000)。接下来的N行中包含若干个整数值(每值均不超过1×1e9)。
【输出格式】
输出仅一行,输出这些数的中位数。
【样例输入】
6
1 3 4 2 3 27
【样例输出】
3
【数据范围】
【数据范围】 对于50%的数据,0<=N<=5000. 对于100%的数据,0<=N<=30000。
第三题 地图测绘
(map.pas/c/cpp)
【问题描述】
地图测绘人员需测定特定区域内水体覆盖范围,在绘制特定区域地形时使用字符标记。便于计算的前提下,“*”符号代表陆地区域,“0”则对应水域区域。在分析特定地图时现需计算水体覆盖范围(即由连续分布于地图上的*符号构成的空间)。根据这一原则,在分析特定地图时现需计算水体覆盖范围(即由连续分布于...符号构成的空间)。具体而言,在分析特定地图时现需计算水体覆盖范围(即由连续分布于...符号构成的空间)。具体而言,在分析特定地图时现需计算水体覆盖范围(即由连续分布于...符号构成的空间)。具体而言,在分析特定地图时现需计算水体覆盖范围(即由连续分布于...符号构成的空间)。具体而言,在分析特定地图时现需计算水体覆盖范围(即由连续分布于...符号构成的空间)。具体而言,在分析特定地图时现需计算水体覆盖范围(即由连续分布于...符号构成的空间)。
【输入格式】
由“0”,“*”组成的地形图(最多1000行,每行不超过200个字符)。
【输出格式】
符合条件的水域面积数。
【样例输入】
*00
0****
000
0****
【样例输出】
2
第四题 积木搭建
(block.pas/c/cpp)
【问题描述】
小萱萱最爱的游戏便是利用积木搭建出精美的城堡。每个城堡都是由若干立方体的积木堆砌而成的,在建造过程中她会发现一个关键原则:如果某一楼层所使用的积木体积大于其上方楼层,则该楼层容易出现倾斜现象。因此在实际操作中她始终严格遵守这一规律:即下层所选用的积木体积必须不大于上一层所选用体积大小。为了展现自己的创造力并增进与其他小朋友之间的友谊关系她希望能够将自己亲手打造的所有城堡均送至幼儿园中与同伴分享。
然而在公平分配方面却遇到了一些挑战:由于各个建筑方案的具体情况并不完全相同为确保所有小朋友获得同样高度的模型她决定采取一种巧妙的方法即对所有现有建筑进行适当地调整:即从每一个建筑中移除一定数量的单个立方体块使得最终所得的所有模型均具有相同的高度值并且尽可能地提高这个共同的高度值。
【输入格式】
第一行为一个整数N(N≤100),代表共有N座城堡。随后的每一行为一系列非负整数(以空格分隔),这些数字按从下往上的顺序依次排列,并完整表示一座城堡中所有积木的具体数值。当某一行出现-1时,则表示这一行数据结束。需要注意的是,在每一座城堡中积木的数量不会超过100块,并且每一块积木的棱长也不会超过100单位长度。
【输出格式】
用一个整数来代表最后城堡能达到的最大高度。当无法找到合适的解决方案时,则返回数值0
【样例输入】
2
2 1 –1
3 2 1 -1
【样例输出】
3
