NOIP2016普及组复赛模拟赛试卷
普及组
(请选手务必仔细阅读本页内容)
二.提交源程序文件名
三.编译命令(不包含任何优化开关)
注意事项:
1、文件名(程序名和输入输出文件名)必须使用英文小写。
2、C/C++中函数 main()的返回值类型必须是 int,程序正常结束时的返回值必须是 0。
3、统一评测时采用的机器配置为:CPU P4 3.0GHz,内存 2G,上述时限以此配置为准。
4、特别提醒:评测在Windows下进行,评测软件为cena8.0。
River Hopscotch
(jump.pas/c/cpp)
【问题描述】
每年,奶牛们都举办一种特殊的跳房子游戏,在这个游戏中,大家小心翼翼地在河中的岩石上跳。
这个游戏在一条笔直的河中进行,以一块岩石表示开始,以另一块距离起点L单位长度的岩石表示结束。
在这两块岩石中间还有N 块岩石,每块的位置距离起点是 Di 个单位长度。
玩这个游戏的时候,每头牛从开始的那块岩石想办法要跳到表示结束的那块岩石上。
中间只能在从某块岩石跳跃到另一块岩石,反复的这样跳。
当然,不够敏捷的牛永远跳不到终点,最终只能落入河中。
农民 John 为他的牛感到自豪,每年都观看比赛。
随着时间的推移,他对于那些胆小的只能跳过很短距离的牛感到厌烦。
为了那些牛,其他农民会把岩石的间距弄得很小。
他计划移除一些岩石,从而增加奶牛在跳跃时需要的最短距离。
他不能移除开始和结束的两块岩石。
但是除此之外他可以移除 M 块岩石。
FJ 希望知道他能够增加多少最短跳跃距离。
求当他移除了M块岩石后,奶牛从开始跳到结束的岩石,每次跳跃的最短距离至多可以增加到多少。
【输入格式】
第1行: 三个用空格分开的整数,分别是 L, N 和 M。
第2..N+1行: 每行一个整数,表示中间N块岩石的位置,没有两块岩石处于同一位置。
【输出格式】
输出共一行一个整数,表示移除某M块岩石后,相邻岩石间距最小值的最大可能情况。
【输入样例】
25 5 2
2
14
11
21
17
【输出样例】
4
【输入说明】中间有 5 块岩石,坐标 2, 11, 14, 17 和 21。
开始岩石在0,结束岩石在25。
【输出解释】没有移除任何岩石之前,最少需要跳2个单位长度,从0到2。
当移除了位于 2 和 14的两块岩石后, 需要的最短跳跃距离就变成了4。
(从 17 到 21 或从 21 到 25)。
【数据规模】
对于30%的数据: 0≤N≤100;
对于50%的数据: 0≤N≤5,000;
对于100%的数据:1≤L≤1,000,000,000;0≤N≤50,000;0<Di<L;0≤M≤N;
Big Square
(bigsq.pas/c/cpp)
【问题描述】
农民 John 的牛参加了一次和农民 Bob 的牛的竞赛。
他们在区域中画了一个N*N的正方形点阵,两个农场的牛各自占据了一些点。
当然不能有两头牛处于同一个点。
农场的目标是用自己的牛作为4个
顶点,形成一个面积最大的正方形(不必须和边界平行) 。
除了 Bessie 以外,FJ其他的牛都已经放到点阵中去了,要确定bessie放在哪个位置,能使得农民约翰的农场得到一个最大的正方形(Bessie不是必须参与作为正方形的四个顶点之一)。
【输入格式】
第1行: 一个整数 N;
第2..N+1行: 第 i+1 行描述点阵的第i行,有 N 个字符。
字符集是: 'J' 表示这个点是农民 John 的牛, 'B'表示这个点是农民 Bob 的牛,'*' 表示这个点没有被占据。
保证至少有一个点没有被占据。
【输出格式】
输出共一行一个整数,最大正方形的面积,或者无解的话输出0。
【输入样例】
6
J*J***
******
J***J*
******
**B***
******
【输出样例】
4
输出说明:
如果 Bessie 可以占据农民 Bob 的牛所占的点,那么可以生成一个面积为8的正方形,但是她只能放到第3行第3列,形成一个最大的、面积为 4个正方形。
【数据规模】
对于40%的数据: 1≤N≤35;
对于50%的数据: 1≤N≤55;
对于100%的数据:1≤N≤100;
Bad Hair Day
(badhair.pas/c/cpp)
【问题描述】
农民John的某 N 头奶牛正在过乱头发节!由于每头牛都意识到自己凌乱不堪的发型,FJ 希望统计出能够看到其他牛的头发的牛的总数量。
每一头牛 i 有一个高度 h[i] 而且面向东方排成一排(在我们的图中是向右)。
因此,第 i 头牛可以看到她前面的那些牛的头,(即i+1, i+2,等等),只要那些牛的高度严格小于她的高度。
例如这个例子:
=
= =
= = = 牛面向右侧 -->
= = =
= = = = =
= = = = = =
1 2 3 4 5 6
牛#1 可以看到的凌乱发型 #2, 3, 4
牛#2 不能看到任何牛的发型
牛#3 可以看到的凌乱发型 #4
牛#4 不能看到任何牛的发型
牛#5 可以看到的凌乱发型 #6
牛#6 不能看到任何牛的发型!
c[i] 表示第i头牛可以看到发型的牛的数量;请输出 c[1] 至 c[N]的和。
如上面的这个例子,正确解是3 + 0 + 1 + 0 + 1 + 0 = 5。
【输入格式】
第1行: 牛的数量 N。
第2..N+1行: 第 i+1 是一个整数,表示第i头牛的高度。
【输出格式】
输出共一行一个整数,表示c[1] 至 c[N]的和。
【输入样例】
6
10
3
7
4
12
2
【输出样例】
5
【数据规模】
对于40%的数据: 1≤N≤1,000;
对于100%的数据:1≤N≤80,000;1≤h[i] ≤1,000,000,000;
Tallest Cow
(tallest.pas/c/cpp)
【问题描述】
约翰的 N 只奶牛正站在一条直线上接受检阅,她们由1到N编号,每一只奶牛都有一个用正整数表示的身高,你被告知最高奶牛的编号I和身高H,但是其它奶牛的身高就不得而知了。
约翰提供了 R 条信息,每条信息用两个整数a和b表示,意味着a能看到b。
也就是说,b的身高不会小于a,而且两只奶牛之间所有奶牛的身高均严格小于a的身高。
对每只奶牛,请计算最大的可能身高。
使之不违反给出的信息,数据保证合理的身高一定存在。
【输入格式】
第1行输入4个整数.分别表示N,I,H,R;
接下来R行每行输入两个整数a和b。
【输出格式】
输出共N行,第i行表示第i号奶牛的最大可能身高。
【输入样例】
9 3 5 5
1 3
5 3
4 3
3 7
9 8
【输出样例】
5
4
5
3
4
4
5
5
5
【输入说明】共计9头奶牛,第3头奶牛的最大身高为5.
【数据规模】
对于40%的数据: 1≤N≤100;1≤H≤1,000;0≤R≤100;
对于70%的数据: 1≤N≤1000;1≤H≤5,000;0≤R≤1,000;
对于100%的数据:1≤N≤10,000;1≤H≤1,000,000;0≤R≤10,000;a≠b;。