1、宁波市第 25 届中小学生计算机程序设计竞赛复赛试题(小学组) 第 6 页 共 6 页 宁波市第25届中小学生计算机程序设计竞赛 复赛试题(小学组) 比赛时间:2010年4月18日上午9:00—12:00 题目一览 试题名称 折纸 教室外的风景 方格稿纸 瓶子涂色 英文代号 folding scene paint bottle 程序名 folding.pas/c/cpp scene.pas/c/cpp paint.pas/c/cpp bottle.pas/c/cpp 输入文件名 folding.in scene.in
2、 paint.in bottle.in 输出文件名 folding.out scene.out paint.out bottle.out 内存限制 128 MB 128 MB 128 MB 128 MB 时限 1秒 1秒 1秒 1秒 关于竞赛中不同语言使用限制的说明 一.关于使用Pascal语言与编译结果的说明 1.对于Pascal语言的程序,当使用IDE和fpc编译结果不一致时,以fpc的编译结果为准。 2.允许使用数学库(uses math子句),以及ansistring。但不允许使用编译开关(最后测试时pa
3、scal的范围检查开关默认关闭:{$R-,Q-,S-}),也不支持与优化相关的选项。 3.本次比赛允许使用64位整数类型:int64或qword。 1. 折纸 (folding) 【题目描述】 小猪上幼儿园的时候,报名参加了折纸兴趣小组。他表现出了极大的热情,折出了n件折纸作品。他的作品只有3种,分别是长方形、正方形和三角形。 a a 边长为a的正方形,周长为4a a a a b 相邻边长度分别为a和b的长方形,周长为2a+2b a b 小猪很想知道他的n件折纸的周长之和。 a b c 三边长度分别为a,b,c的三角形,周长为a+b+c
4、 【输入】 输入文件folding.in的第一行只有一个整数n,表示共有n件作品。 接下来n行,每行有若干个以空格分隔的整数,表示一件作品的情况。其中第一个整数k(k=1或2或3),表示小猪制作的这件作品的类型,1表示长方形,2表示正方形,3表示三角形。 如果k为1,后面会跟二个正整数a和b,表示长方形的二条相邻边的长度分别为a和b; 如果k为2,后面会跟一个正整数a,表示正方形的四条边的长度均为a。 如果k为3,后面会跟三个正整数a、b和c,表示三角形三条边的长度分别为a、b和c(输入数据保证a,b,c能构成三角形,不需验证)。 【输出】 输出文件fo
5、lding.out中仅有一行,该行只有一个整数,表示所有作品的周长之和。 【样例输入】 3 1 2 3 2 4 3 6 7 8 【样例输出】 47 【样例说明】 共有3件作品: 第一件作品:二条相邻边长度分别为2和3的长方形; 第二件作品:边长为4的正方形; 第三件作品:三条边长度分别为6、7、8的三角形。 这3件作品的周长分别为10、16、21,它们的周长之和为47。 【数据规模】 50%的数据,1≤n≤50,所有边长为不超过100正整数。 100%的数据,1≤n≤100000,所有边长为不超过100000的正整数。
6、2. 方格稿纸 (paint) 【题目描述】 小猪在小学中认识了很多的字,终于会写一点作文了。某天小猪买了一张方格稿纸来写作文,n行m列,形状如下所示: 方格稿纸示意图 上图中n=m=5。 某天小猪的邻居小小猪来小猪家玩,用黑墨水笔把小猪新买的方格稿纸涂黑了很多格子。每个格子不是完全黑色就是完全白色,如下图所示。 染色后的方格稿纸示意图 小猪不能责怪小小猪。作文写不成了,他觉得很
7、无聊,就开始数里面有多少魔幻方阵。 如果稿纸中一个k×k的正方形区域满足以下两个条件,那么它就是魔幻方阵: 1.黑白格子的数量差不能超过1; 2.k不能小于2。 上图染色后的方格稿纸共有9个魔幻方阵(6个2×2的魔幻方阵,3个3×3的魔幻方阵),现在请你帮小猪求出他被染色的稿纸里面有多少个魔幻方阵。 【输入】 输入文件paint.in中的第一行有二个正整数n和m(互相之间以一个空格分隔),表示稿纸共有n行m列。 接下来n行,每行有m个0或1的整数(互相之间以一个空格分隔),代表每个格子的颜色。如果这个数是1则为黑色,是0则为白色。 【输出】 输出文件paint.o
8、ut中仅有一行,该行只有一个整数,表示稿纸中魔幻方阵的个数。 【样例输入】 5 5 1 0 1 1 1 1 0 1 0 1 1 1 0 1 1 1 0 0 1 1 1 1 1 1 1 【样例输出】 9 【数据规模】 50%的数据,1≤n≤10,1≤m≤10; 75%的数据,1≤n≤180,1≤m≤180; 100%的数据,1≤n≤300,1≤m≤300。 3. 教室外的风景 (scene) 【题目描述】 小猪上初中了,初中真好啊,有很多自修课哦。很多同学喜欢在自修课时到教室外面去,说是到老师那问问题J。 学校规定,自修课到教室
9、外去的每个同学都必须做好登记,每次进出教室的登记是以一对整数a和b来描述的,表示某一个同学在时刻a时到教室外面,在时刻b以后回到教室内。也就是说在时刻a至时刻b的这段时间中,这个登记的同学一直在教室外面。 校长想知道最多有多少同学在同一时刻都在教室外面,但同学们进进出出教室的记载实在很乱,于是校长请参加信息学兴趣小组的小猪来统计。 【输入】 输入文件scene.in中的第一行只有一个整数n,表示共有n个同学进出教室的记载。 接下来n行,每行二个整数a和b,表示有一个同学在第a时刻出了教室,他在第b时刻后回到教室。 【输出】 输出文件scene.out中仅有一行,该行只有
10、一个整数,表示最多有多少同学在同一时刻都在教室外面。 【样例输入】 4 2 6 8 9 1 5 1 2 【样例输出】 3 【样例说明】 第一个同学在时刻2到教室外面,在时刻6后回到教室; 第二个同学在时刻8到教室外面,在时刻9后回到教室; 第三个同学在时刻1到教室外面,在时刻5后回到教室; 第四个同学在时刻1到教室外面,在时刻2后回到教室; 因此在时刻2时,最多有3个同学(第一个、第三个和第四个)在教室外面。 【数据规模】 50%的数据中,1≤n≤1000;每个同学进出教室的时刻a和b满足:1≤a≤b≤1000; 100%的数据中,1≤
11、n≤100000,1≤a≤b≤100000000。 4. 瓶子涂色 (bottle) 【题目描述】 小猪上小学的时候,一度对颜色非常感兴趣,虽然他的美术非常糟糕L。 有一次他喝完n瓶饮料把透明的瓶子排成一排,想把这些饮料瓶子都涂上颜色。他觉得如果所有相邻的两个瓶子颜色都不一样的话会比较有趣。 他现在只有红色(Red)、绿色(Green)和蓝色(Blue)这三种颜料。由于瓶子的大小和表面材质不同,在不同的瓶子上涂不同的颜色需要的花费都不一样。小猪统计了一下,把第i个瓶子染成红色需要Ri元钱,染成绿色需要Gi元钱,染成蓝色需要Bi元钱。 现在请你帮他计算出要使相邻两个瓶
12、子的颜色都不一样,他至少需要多少花费。 【输入】 输入文件bottle.in中的第一行只有一个整数n,表示共有n只瓶子。 第二行有n个正整数(以一个空格分隔),第i个数Ri表示把第i个瓶子染成红色需要Ri元钱。 第三行有n个正整数(以一个空格分隔),第i个数Gi表示把第i个瓶子染成绿色需要Gi元钱。 第四行有n个正整数(以一个空格分隔),第i个数Bi表示把第i个瓶子染成蓝色需要Bi元钱。 【输出】 输出文件bottle.out中仅有一行,该行只有一个整数,表示最小花费。 【样例输入】 5 1 3 1 2 2 1 2 3 4 3 4 2 1 5 3 【样例输出】 9 【数据规模】 30%的数据中,1≤n≤10; 70%的数据中,1≤n≤30; 100%的数据中,1≤n≤100000,1≤Ri, Gi, Bi≤100。 © 宁波市计算机学会,2010






