青少年信息学奥林匹克竞赛
小学组试题
合肥市第 33 届青少年信息学(计算机)奥林匹克竞
赛小学组试题
题目名称
源文件名
输入文件名
输出文件名
试题类型
满分
是否有部分分
时限
内存限制
木板面积
area.pas/c/cpp
出现次数最多的数
weight.pas/c/cpp
乘船过河
能量最大化
ship.pas/c/cpp
energy.pas/c/cpp
area.in
area.out
传统型
100
否
1 秒
128M
weight.in
weight. out
传统型
100
否
1 秒
128M
ship.in
ship. out
传统型
100
否
1 秒
128M
energy.in
energy. out
传统型
100
否
1 秒
128M
1.木板面积(area)
在一个阳光明媚的清晨,卡卡西在老师的带领下来到了“神奇木材加工厂”。
这个木材加工厂比较特别,工人们只制作圆形和长方形样式的木板,工厂的测量
工人每天需要计算每块成品木板的面积以便统计使用木材的数量。如果是一个圆
形木板,他们只需要测量半径的长度;如果是一个长方形木板,仅需要测量两条
边的长度。对工人师傅们而言,测量是一件很简单的事,但是计算木板面积却是
一件重复而又繁琐的事,看着测量工人们愁眉苦脸的样子,卡卡西急在心上,亲
爱的小朋友们,你们能帮助卡卡西,为测量工人们解决这个问题吗?
输入:输入数据有两行。第一行一个正整数 m,表示测量的木板形状(1 表示圆
形,2 表示长方形);第二行有若干个整数,如果 m=1,第二行给出圆形
的半径 a(规定圆周率取 3.14);如果 m=2,第二行给出长方形长和宽 a,
b(中间用空格隔开)。
输出:木板面积。(若是圆形,最后输出结果精确到小数点后 2 位;若是长方形
则输出结果为整数)
样例 1:
输入:(area.in)
1
3
输出:(area.out)
28.26
合肥家长帮社区
2017 合肥小升初交流群 413414968
小学组试题
青少年信息学奥林匹克竞赛
样例 2:
输入:(area.in)
2
3 4
输出:(area.out)
12
数据范围:
0≤木板边长或半径≤100
2、出现次数最多的数(weight)
聪明的卡卡西帮助工人师傅们解决了难题,师傅们为了表示感谢,带领他们
到了附近的西瓜地,请他们吃西瓜,正好看到农民伯伯正在给每个西瓜称重,每
个西瓜的重量都记录在纸上,农民伯伯想知道这遍地的西瓜哪个重量的西瓜最
多。卡卡西眼前一亮,大声的说:“伯伯,让我来帮你完成吧!”
输入:输入数据有两行。第一行只有一个正整数 n,表示西瓜的个数。第二行有
n 个整数 s1, s2, …, sn,表示每个西瓜的重量,相邻的数用空格分隔。
输出:这 n 个重量中出现次数最多的数。如果这样的数有多个,输出其中最小的
一个。
样例 1:
输入:(weight.in)
6
10 1 10 20 30 20
输出:(weight.out)
10
数据范围:
3≤n≤1000,1≤si≤10000
3、乘船过河(ship)
卡卡西和小朋友们要乘船过河了,港口有很多条船可以租到,并且之间没有
区别,每条船的出租费也是一样的。但是一条船最多只能乘坐两个人,且乘客的
总重量不能超过船的最大承载量。我们要找出可以安置所有小朋友的最少船数以
合肥家长帮社区
2017 合肥小升初交流群 413414968
青少年信息学奥林匹克竞赛
小学组试题
降低总的租船费用,卡卡西很快的写出了一个程序,读入船的最大承载量、旅客
数目和每位旅客的重量,计算出要安置所有同学必须的最少的船的数目。
输入:输入数据有两行。第一行两个整数 w 和 n,用空格分隔,分别表示一条船
的最大承载量和人数;第二行中每个数据是每个人的重量,也是整数,数
据间用空格分隔。
输出:最少船数。
样例 1:
输入:(ship.in)
85 6
5 84 85 80 84 83
输出:(ship.out)
5
样例 2:
输入:(ship.in)
100 5
50 50 90 40 60
输出:(ship.out)
3
数据范围:
3≤w≤200
3≤n≤300 每位乘客的重量都不大于船的承载量。
4、能量最大化(energy)
卡卡西手上有一串能量项链。在项链上有 N 颗能量珠。能量珠是一颗有头
标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,
前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘的
作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如
果前一颗能量珠的头标记为 m,尾标记为 r,后一颗能量珠的头标记为 r,尾标
记为 n,则聚合后释放的能量为 m*r*n,新产生的珠子的头标记为 m,尾标记为
n。可以将相邻的两颗珠子聚合得到能量,直到项链上只剩下一颗珠子为止。显
然,不同的聚合顺序得到的总能量是不同的,请你设计一个聚合顺序,使一串项
链释放出的总能量最大。
例如:设 N=4,4 颗珠子的头标记与尾标记依次为(2,3) (3,5) (5,10) (10,2)。
我们用记号⊕表示两颗珠子的聚合操作,(j⊕k)表示第 j,k 两颗珠子聚合后所释
放的能量。
合肥家长帮社区
2017 合肥小升初交流群 413414968
青少年信息学奥林匹克竞赛
小学组试题
则第 1、2 两颗珠子聚合后释放的能量为: (1⊕2)=2*3*5=30,新产生的珠子头
标记与尾标记(2, 5)
第 4、1 两颗珠子聚合后释放的能量为: (4⊕1)=10*2*3=60。新产生的珠子头
标记与尾标记(10, 3)
这一串项链可以得到最优值的一个聚合顺序所释放的总能量为
((4⊕1)⊕2)⊕3)=10*2*3+10*3*5+10*5*10=710。
输入: 输入共两行,第一行是一个正整数 N,表示项链上珠子的个数。第二行
是 N 个用空格隔开的正整数。第 i 个数为第 i 颗珠子的头标记(1≤i≤N),当 i