NOIP2013提高组复赛试题day2.doc
文本预览下载声明
CCF 全国信息学奥林匹克联赛(NOIP2013)复赛
提高组 day2
(请选手务必仔细阅读本页内容)
一.题目概况
中文题目名称 积木大赛 花匠 华容道 英文题目与子目录名 block flower puzzle 可执行文件名 block flower puzzle 输入文件名 block.in flower.in puzzle.in 输出文件名 block.out flower.out puzzle.out 每个测试点时限 1 秒 1 秒 1 秒 测试点数目 10 10 20 每个测试点分值 10 10 5 附加样例文件 有 有 有 结果比较方式 题目类型 传统 传统 传统 运行内存上限 128M 128M 128M
二.提交源程序文件名
对于 C++语言 block.cpp flower.cpp puzzle.cpp 对于 C 语言 block.c flower.c puzzle.c 对于 pascal 语言 block.pas flower.pas puzzle.pas
对于 C++语言 g++ -o block block.cpp -lm g++ -o flower flower.cpp –lm g++ -o puzzle puzzle.cpp -lm 对于 C 语言 gcc -o block block.c -lm gcc -o flower flower.c –lm gcc-o puzzle puzzle.c -lm 对于 pascal 语言 fpc block.pas fpc flower.pas fpc puzzle.pas
注意事项:
1、文件名(程序名和输入输出文件名)必须使用英文小写。
2、C/C++中函数 main()的返回值类型必须是 int,程序正常结束时的返回值必须是 0。
3、全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) 64x2 Dual Core CPU 5200+,
2.71GHz,内存 2G,上述时限以此配置为准。
4、只提供 Linux 格式附加样例文件。
5、特别提醒:评测在 NOI Linux 下进行。
1.积木大赛
(block.cpp/c/pas)
春春幼儿园举办了一年一度的“积木大赛”。今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第i块积木的最终高度需要是?i。
在搭建开始之前,没有任何积木(可以看成块高度为 0 的积木)。接下来每次操作,小朋友们可以选择一段连续区间[L,R],然后将第L块到第R块之间(含第 L 块和第 R 块)所有积木的高度分别增加1。
小M是个聪明的小朋友,她很快想出了建造大厦的最佳策略,使得建造所需的操作次数最少。但她不是一个勤于动手的孩子,所以想请你帮忙实现这个策略,并求出最少的操作次数。
【输入】
输入文件为 block.in
?i。
【输出】
输出文件为 block.out
仅一行,即建造所需的最少操作数。
【输入输出样例】
block.in block.out 5
2 3 4 1 2 5
【样例解释】
其中一种可行的最佳方案,依次选择
[1,5] [1,3] [2,3] [3,3] [5,5]
对于 30%的数据,有1 ≤ n ≤ 10;
对于 70%的数据,有1 ≤ n ≤ 1000;
对于 100%的数据,有1 ≤ n ≤ 100000,0 ≤ hi ≤ 10000。
2.花匠
(flower.cpp/c/pas)
【问题描述】
花匠栋栋种了一排花,每株花都有自己的高度。花儿越长越大,也越来越挤。栋栋决定把这排中的一部分花移走,将剩下的留在原地,使得剩下的花能有空间长大,同时,栋栋希望剩下的花排列得比较别致。
具体而言,栋栋的花的高度可以看成一列整数?1, ?2, … , ?n。设当一部分花被移走后,剩下的花的高度依次为g1, g2, … , gm,则栋栋希望下面两个条件中至少有一个满足:
条件 A:对于所有的1≤i≤,有g2i g2i-1,同时对于所有的1≤i≤,有g2i g2i+1;
条件 B:对于所有的1≤i≤,有g2i g2i-1,同时对于所有的1≤i≤,有g2i g2i+1。
注意上面两个条件在 = 1时同时满足,当 m 1时最多有一个能满足。
请问,栋栋最多能将多少株花留在原地。
【输入】
输入文件为 flower.in。
输入的第一行包含一个整数,表示开始时花的株数。
第二行包含个整数,依次为?1, ?2, … , ?n,表示每株花的高度。
【输出】
输出文件为 flower.out。
输出一
显示全部