NOIP历年复赛提高组试题(2004-2013)
NOIP2013提高组初赛试题与答案

CCF NOIP2013 初赛提高组 C 语言试题 第 1 页,共 12 页
A. 2
B. 3
C. 4
D. 5
7. 斐波那契数列的定义如下:F1 = 1, F2 = 1, Fn = Fn – 1 + Fn – 2 (n ≥ 3)。如果用下面的函数计 算斐波那契数列的第 n 项,则其时间复杂度为( )。
2. ( )的平均时间复杂度为 O(n log n),其中 n 是待排序的元素个数。
A. 快速排序
B. 插入排序
C. 冒泡排序
D. 归并排序
3. 以 A0 作为起点,对下面的无向图进行深度优先遍历时(遍历的顺序与顶点字母的下标 无关),最后一个遍历到的顶点可能是( )。
A. A1
B. A2
C. A3
A. 先序遍历
B. 中序遍历
C. 后序遍历
D. 宽度优先遍历
9. 将(2, 6, 10, 17)分别存储到某个地址区间为 0~10 的哈希表中,如果哈希函数 h(x) =
( ),将不会产生冲突,其中 a mod b 表示 a 除以 b 的余数。
A. x mod 11
B. x2 mod 11
C. 2x mod 11
那么,12 个顶点的二分图至多有( )条边。
A. 18
B. 24
C. 36
D. 66
12. ( )是一种通用的字符编码,它为世界上绝大部分语言设定了统一并且唯一的二进 制编码,以满足跨语言、跨平台的文本交换。目前它已经收录了超过十万个不同字符。
A. ASCII
B. Unicode
C. GBK 2312
const int SIZE = 100;
int main() {
NOIP提高组复赛题目

第一题题库NOIP20071.统计数字(count.pas/c/cpp)【问题描述】某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。
已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。
【输入】输入文件count.in包含n+1行:第1行是整数n,表示自然数的个数。
第2~n+1行每行一个自然数。
【输出】输出文件count.out包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。
每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。
【输入输出样例】【限制】40%的数据满足:1<=n <=100080%的数据满足:1<=n <=50000100%的数据满足:1<=n <=200000,每个数均不超过1 500 000 000(1.5*109)NOIP20081. 笨小猴(wird.pas/c/cpp)【问题描述】笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。
但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设maxn 是单词中出现次数最多的字母的出现次数,minn 是单词中出现次数最少的字母的出现次数,如果maxn-minn 是一个质数,那么笨小猴就认为这是个Lucky Word ,这样的单词很可能就是正确的答案。
【输入】输入文件word.in 只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。
【输出】输出文件word.out 共两行,第一行是一个字符串,假设输入的的单词是Lucky Word ,那么输出“Lucky Word ”,否则输出“No Answer ”;第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn 的值,否则输出0。
noip2004 提高组复赛试题及参考程序(pascal)

第十届信息学奥林匹克联赛复赛试题(NOIP2004)一、津津的储蓄计划(save.pas/c/cpp)【问题描述】津津的零花钱一直都是自己管理。
每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。
为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。
因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。
例如11月初津津手中还有83元,妈妈给了津津300元。
津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。
到了11月月末,津津手中会剩下3元钱。
津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。
有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。
如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。
现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。
如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。
【输入文件】输入文件save.in包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。
【输出文件】输出文件save.out包括一行,这一行只包含一个整数。
如果储蓄计划实施过程中出现某个月钱不够用的情况,输出-X,X表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。
【样例输入1】29023028020030017034050908020060【样例输出1】-7【样例输入2】29023028020030017033050908020060【样例输出2】1580二、合并果子(fruit.pas/c/cpp)【问题描述】在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。
CSP-J (NOIP普及组) 复赛2010-2023考查内容一览表

CSP-J (NOIP提高组) 复赛2010-2020考查内容NOIP2017提高组T4奶酪深搜、广搜、并查集T5宝藏状压DPT6列队线段树NOIP2016提高组T1玩具谜题模拟T2天天爱跑步倍增LCAT3换教室动态规划(高级)T4组合数问题前缀和、杨辉三角T5蚯蚓队列、单调性T6愤怒的小鸟状压DPNOIP2015提高组T1神奇的幻方模拟T2信息传递并查集T3斗地主动态规划(高级)、深搜T4跳石头二分T5子串滚动数组、动态规划(高级) T6运输计划二分、LCA、非递归NOIP2014提高组T1生活大爆炸版石头剪刀布模拟T2联合权值动态规划(高级)、前缀和T3飞扬的小鸟动态规划(高级)T4无线网络发射器选址枚举T5寻找道路最短路T6解方程数论、枚举NOIP2013提高组T1转圈游戏快速幂T2火柴排队归并排序、逆序对T3货车运输最小生成树、LCA、倍增T4积木大赛贪心T5花匠贪心T6华容道广搜、剪枝NOIP2012提高组T1Vigenere密码枚举、模拟T2国王游戏贪心、高精度T3开车旅行平衡树、倍增T4同余方程扩展欧几里得T5借教室线段树T6疫情控制二分、倍增NOIP2011提高组T1铺地毯模拟T2选择客栈动态规划(高级)、RMQ T3Mayan游戏T4计算系数组合数学T5聪明的质监员二分T6观光公交贪心NOIP2010提高组T1机器翻译队列T2乌龟棋动态规划T3关押罪犯二分、并查集T4引水入城广搜、动态规划T3摆渡车动态规划(高级) T4对称二叉树二叉树NOIP2017普及组序号题名考查内容T1成绩顺序结构T2图书管理员结构体排序T3棋盘深搜、剪枝T4跳*房*子二分、动态规划NOIP2016普及组序号题名考查内容T1买铅笔一重循环T2回文日期回文T3海港大模拟、队列T4魔*法*阵枚举、前缀和NOIP2015普及组序号题名考查内容T1金*币一重循环T2扫*雷*游*戏二维数组T3求和组合数学T4推销员贪心、优先队列NOIP2014普及组序号题名考查内容T1珠心算测验模拟T2比例简化枚举、gcdT3螺旋矩阵模拟、找规律T4子矩阵动态规划(高级)NOIP2013普及组序号题名考查内容T1记数问题二重循环T2表达式求值栈T3小朋友的数字动态规划(高级) T4车站分级拓扑排序NOIP2012普及组序号题名考查内容T1质因数分解一重循环、质数T2寻*宝模拟、取模T3摆花背包、动态规划T4文化之旅最短路NOIP2011普及组序号题名考查内容T1数字反转进制转换T2统计单词数字符串T3瑞士轮归并排序T4表达式的值动态规划(高级)、栈NOIP2010普及组序号题名考查内容T1数字统计二维数组T2接水问题模拟T3导*弹*拦*截贪心T4三*国*游*戏贪心、博弈。
历年NOIP提高组试题难度列表

NOIP2008-D
NOIP2009-A
NOIP2009-B
火柴棒等式 模拟
传纸条 双栈排序
动态 规划
构造
潜伏者 模拟
Hankson的 趣味题
数学
枚举,优化/开表 0.8
历届搜索
题一般都比较
多维状态DP 0.7 难,搜索算法
本身简单,于
枚举,贪心/二分 图
0.4
是题目会提高
选手对其他方
模拟
【构造】
动态 规划
构 造, 贪心
多维DP
BFS/贪心,并查 集
平均难度系 数:0.27
构造类题 目一般没有明 确的算法,需
NOIP2010-D
引水入城
搜索 BFS
要选手仔细分 析题目的实
质,并得出解法。
这个解法通常不是唯一的。有时一个好的贪心可以得相当
多的分。有时搜索剪枝可以很大的提高效率。同样以多得分为
需要掌握
模拟,字符串
质数及其性 0.8 质,基础的实
子序列DP,贪心 优化
0.2
数操作,加法 原理和乘法原
置换群,贪心 0.2 理。此类题需
字符串,抽样检 测,表达式
区间环DP
要选手对数学 0.3 规律的灵感。
【图论】 0.6 平均难度系
资源分配DP,构 造
0.6
数:0.50 历届考察
模拟
动态规划/组合 数学,高精度
金明的预算 动态
方案
规划
作业调度方 案
模拟
2^k进制数
动态 规划
统计数字 模拟
字符串的展 开
模拟
矩阵取数游 动态
戏
规划
树网的核 图论
NOIP历年复赛提高组试题(2004-2013)

第十届全国信息学奥林匹克分区联赛(NOIP2004)复赛试题(提高组竞赛用时:3小时)1、津津的储蓄计划(Save.pas/dpr/c/cpp)【问题描述】津津的零花钱一直都是自己管理。
每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。
为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。
因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。
例如11月初津津手中还有83元,妈妈给了津津300元。
津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。
到了11月月末,津津手中会剩下3元钱。
津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。
有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。
如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。
现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。
如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。
【输入文件】输入文件save.in包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。
【输出文件】输出文件save.out包括一行,这一行只包含一个整数。
如果储蓄计划实施过程中出现某个月钱不够用的情况,输出-X,X表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。
【样例输入1】29023028020030017034050908020060【样例输出1】-7【样例输入2】29023028020030017033050908020060【样例输出2】1580【问题描述】在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。
NOIP历年真题-2004_2010

历年真题:2004年第十届全国青少年信息学奥林匹克联赛初赛试题(提高组 Pascal 语言 二小时完成 )●● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ●●一、 单项选择题(共10题,每题1.5分,共计15分。
每题有且仅有一个正确答案.)。
1. 设全集I = {a, b, c, d, e, f, g},集合A = {a, b, c},B = {b, d, e},C = {e, f,g},那么集合)(~)(B C B A ⋂⋃-为( )。
A. {a, b, c, d}B. {a, b, d, e}C. {b, d, e}D. {b, c, d, e}E. {d, f, g} //注意顺序,没有难度了选a2. 由3个a ,5个b 和2个c 构成的所有字符串中,包含子串“abc ”的共有( )个。
A. 40320B. 39600C. 840D. 780E. 60//1abc,2a,4b,1c →8!/(2!*4!*1!*1!*1!)=840-2abc,3b,1a →6!/(2!*3!*1!)=60 选d3.某个车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。
已知某时刻该车站状态为空,从这一时刻开始的出入记录为:“进,出,进,进,出,进,进,进,出,出,进,出”。
假设车辆入站的顺序为1,2,3,……,则车辆出站的顺序为( )。
A. 1, 2, 3, 4, 5B. 1, 2, 4, 5, 7C. 1, 3, 5, 4, 6D. 1, 3, 5, 6, 7E. 1, 3, 6, 5, 7//栈操作,显然是e4. 满二叉树的叶结点个数为N ,则它的结点总数为( )。
A. NB. 2 * NC. 2 * N – 1D. 2 * N + 1E. 2N– 1//需要知道满二叉树的概念,画图就可知道,选c5. 二叉树T ,已知其前序遍历序列为1 2 4 3 5 7 6,中序遍历序列为4 2 1 5 7 3 6,则其后序遍历序列为( )。
2004年NOIP联赛提高组初赛试题及答案

第十届全国青少年信息学奥林匹克联赛初赛试题(提高组 Pascal 语言二小时完成)●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一、单项选择题(共10题,每题1.5分,共计15分。
每题有且仅有一个正确答案.)。
1.设全集I = {a, b, c, d, e, f, g},集合A = {a, b, c},B = {b, d, e},C = {e, f, g},那么集合BA⋂⋃-为()。
C)(~)(BA. {a, b, c, d}B. {a, b, d, e}C. {b, d, e}D. {b, c, d, e}E. {d, f, g}2.由3个a,5个b和2个c构成的所有字符串中,包含子串“abc”的共有()个。
A. 40320B. 39600C. 840D. 780E. 603.某个车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。
已知某时刻该车站状态为空,从这一时刻开始的出入记录为:“进,出,进,进,出,进,进,进,出,出,进,出”。
假设车辆入站的顺序为1,2,3,……,则车辆出站的顺序为()。
A. 1, 2, 3, 4, 5B. 1, 2, 4, 5, 7C. 1, 3, 5, 4, 6D. 1, 3, 5, 6, 7E. 1, 3, 6, 5, 74.满二叉树的叶结点个数为N,则它的结点总数为()。
A. NB. 2 * NC. 2 * N – 1D. 2 * N + 1E. 2N– 15.二叉树T,已知其前序遍历序列为1 2 4 3 5 7 6,中序遍历序列为4 2 1 5 7 3 6,则其后序遍历序列为()。
A. 4 2 5 7 6 3 1B. 4 2 7 5 6 3 1C. 4 2 7 5 3 6 1D. 4 7 2 3 5 6 1E. 4 5 2 6 3 7 16.十进制数100.625等值于二进制数()。
A. 1001100.101B. 1100100.101C. 1100100.011D. 1001100.11E. 1001100.017.下面哪个部件对于个人桌面电脑的正常运行不是必需的()。
NOIP提高组初赛历年试题及答案阅读题篇

NOIP提高组初赛历年试题及答案阅读题篇阅读程序写结果(共4 题,每题8 分,共计32 分)阅读程序的最好方法并非是依次从头到尾。
程序不像迷语,我们无法从末尾几页找到答案,也不像一本引人入胜的书籍,只需直接翻到褶皱最多的那几页,我们就能找到最精彩的片断。
因此我们在阅读程序时,最好逐一考察研究每一段代码,搞清楚每一段代码的来龙去脉,理解每一段代码在程序中所起的作用,进而形成一个虚拟的程序结构,并以此为基础来进行阅读。
1、分层读:高层入手,逐层深入,正确理解程序。
2、写注解:固化、总结、提炼已有的理解成果。
3、先模拟:根据代码顺序跟踪变量,模拟运算。
4、找规律:先模拟几次循环后,找出背后的规律。
5、看功能:从代码结构和运算结果判断程序功能。
6、猜算法:有时不知道算法,通过结构和函数猜一猜。
7、换方法:了解程序本质后,换一个熟悉的方法试试。
对大多数人来说,写程序是令人开心的一件事情,读别人的程序却很痛苦,很恐惧,宁愿自己重写一遍。
其实读到好的程序,就像读一篇美文,令人心旷神怡,豁然开朗,因为这背后是一个人的思维,甚至整个人生。
阅读别人的程序不仅可以巩固自己的知识,启发自己的思维,提升自己的修养,让你收获满满,其实,这也是在学习、在竞赛、在工作中的最重要、最常用的基本功。
如果说写程序是把自己的思维转化为代码,读程序就是把代码转化为你理解的别人的思维。
当你阅读程序时有强烈的代入感,像演员一样,真正进入到编剧的精神世界,面部表情也随之日渐丰富起来。
祝贺你!你通关了!总之,看得多,码得多,拼得多,你就考得多……NOIP2011-1.#include <iostream>#include <cstring> using namespace std; const int SIZE = 100; int main(){int n,i,sum,x,a[SIZE]; cin>>n;memset(a,0,sizeof(a)); for(i=1;i<=n;i++){ cin>>x;a[x]++;}i=0;sum=0;while(sum<(n/2+1)){ i++;sum+=a[i];}cout<<i<<endl; return 0;}输入:4 5 6 6 4 3 3 2 3 2 1一步步模拟,注意输出的是sum超出循环条件时的i值(中位数),而不是sum,也不是a[x]输出:3NOIP2011-2.#include <iostream>using namespace std;int n;void f2(int x,int y);void f1(int x,int y){if(x<n)f2(y,x+y);void f2(int x,int y){cout<<x<<' ';f1(y,x+y);}int main(){cin>>n;f1(0,1);return 0;}输入:30此为简单的递归题,依次输出f2(x,y)中的x值,注意边界条件时f1(x,y)的x>=30咦!这不是隔一个输出一个的Fibonacci吗?输出:1 2 5 13 34NOIP2011-3.#include <iostream>using namespace std;const int V=100;int n,m,ans,e[V][V];bool visited[V];void dfs(int x,intlen){int i;visited[x]= true;if(len>ans)ans=len;for(i=1;i<=n;i++)if( (!visited[i]) &&(e[x][i]!=-1) ) dfs(i,len+e[x][i]);visited[x]=false;}int main(){int i,j,a,b,c;cin>>n>>m;for(i=1;i<=n;i++)for(j=1;j<=m;j++)e[i][j]=-1;for(i=1;i<=m;i++) {cin>>a>>b>>c; e[a][b]=c;e[b][a]=c;}for(i=1;i<=n;i++) visited[i]=false; ans=0;for(i=1;i<=n;i++) dfs(i,0);cout<<ans<<endl; return 0;}输入:4 61 2 102 3 203 4 304 1 401 3 502 4 60一看就知这是深搜算法(DFS),输入是个四个顶点的无向图(邻接矩阵如下):如len>ans,则ans=len,可以说明这是个在图中用DFS找最长的路径的程序。
NOIP2013提高组复赛试题

NOIP2013提高组复赛试题CCF 全国信息学奥林匹克联赛(NOIP2013)复赛提高组 day11.转圈游戏(circle.cpp/c/pas)【问题描述】n 个小伙伴(编号从0 到n-1)围坐一圈玩游戏。
按照顺时针方向给 n 个位置编号,从 0 到 n-1。
最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,……,依此类推。
游戏规则如下:每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第1 号位置小伙伴走到第m+1 号位置,……,依此类推,第n ?m号位置上的小伙伴走到第 0 号位置,第n-m+1 号位置上的小伙伴走到第 1 号位置,……,第 n-1 号位置上的小伙伴顺时针走到第m-1 号位置。
现在,一共进行了10^k 轮,请问x 号小伙伴最后走到了第几号位置。
【输入】输入文件名为circle.in。
输入共1 行,包含4 个整数n、m、k、x,每两个整数之间用一个空格隔开。
【输出】输出文件名为c ircle.out。
输出共1行,包含1个整数,表示10k 轮后x号小伙伴所在的位置编号。
【数据说明】对于30%的数据,0 < k < 7;对于80%的数据,0 < k < 107;对于100%的数据,1 < n< 1,000,000,0 <="" <="" <="" n,0="" p="" x="" ≤="" ,0="">2.火柴排队(match.cpp/c/pas)【问题描述】涵涵有两盒火柴,每盒装有n 根火柴,每根火柴都有一个高度。
现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为:,其中 ai 表示第一列火柴中第i 个火柴的高度,bi 表示第二列火柴中第 i 个火柴的高度。
NOIP2001-2011提高组复赛试题合集

神经元〔编号为 1) 图中,X1—X3 是信息输入渠道,Y1-Y2 是信息输出渠道,C1 表示神经元目前的状态, Ui 是阈值,可视为神经元的一个内在参数。 神经元按一定的顺序排列,构成整个神经网络。在兰兰的模型之中,神经网络中的神 经无分为几层;称为输入层、输出层,和若干个中间层。每层神经元只向下一层的神经元 输出信息,只从上一层神经元接受信息。下图是一个简单的三层神经网络的例子。
第九届全国青少年信息学奥林匹克联赛(N0IP2003)
2003 年 11 月 29 日 提高组试题 三小时完成
题一
神经网络
【问题背景】 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算 系统,在模式识别、函数逼近及贷款风险评估等诸多领域有广泛的应用。对神经网络的研究 一直是当今的热门方向, 兰兰同学在自学了一本神经网络的入门书籍后, 提出了一个简化模 型,他希望你能帮助他用程序检验这个神经网络模型的实用性。 【问题描述】 在兰兰的模型中,神经网络就是一张有向图,图中的节点称为神经元,而且两个神经 元之间至多有一条边相连,下图是一个神经元的例子:
题三 统计单词个数(30 分) 问题描述 给出一个长度不超过 200 的由小写英文字母组成的字母串(约定;该字串以每行 20 个字母的方式输入,且 保证每行一定为 20 个)。要求将此字母串分成 k 份(1<k<=40),且每份中包含的单词个数加起来总数最大 (每份中包含的单词可以部分重叠。当选用一个单词之后,其第一个字母不能再用。例如字符串 this 中 可包含 this 和 is,选用 this 之后就不能包含 th)。 单词在给出的一个不超过 6 个单词的字典中。 要求输出最大的个数。 输入格式 去部输入数据放在文本文件 input3.dat 中,其格式如下: 第一行为一个正整数(0<n<=5)表示有 n 组测试数据 每组的第一行有二个正整数(p,k) p 表示字串的行数; k 表示分为 k 个部分。 接下来的 p 行,每行均有 20 个字符。
NOIP2004普及组复赛试题

我们假定多多在每个单位时间内,可以做下列四件事情中的一件:
1)
从路边跳到最靠近路边(即第一行)的某棵花生植株;
2)
从一棵植株跳到前后左右与之相邻的另一棵植株;
3)
采摘一棵植株下的花生;
4)
从最靠近路边(即第一行)的某棵花生植株跳回路边。
现在给定一块花生田的大小和花生的分布,请问在限定时间内,多多最多可以采到多少个花 生?注意可能只有部分植株下面长有花生,假设这些植株下的花生个数各不相同。
【样例输入】
53
62
72
53
54
04
06
【样例输出】
3
2、花生采摘(peanuts.pas/c/cpp)
【问题描述】
鲁宾逊先生有一只宠物猴,名叫多多。这天,他们两个正沿着乡间 小路散步,突然发现路边 的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!——熊字”。
鲁宾逊先生和多多都很开心,因为花生正是他们的最爱。在告示牌背后,路边真的有一块花 生田,花生植株整齐地排列成矩形网格(如图 1)。有经验的多多一眼就能看出,每棵花生 植株下的花生有多少。为了训练多多的算术,鲁宾逊先生说:“你先找出花生最多的植株, 去采摘它的花生;然后再找出剩下的植株里花生最多的,去采摘它的花生 ;依此类推,不过 你一定要在我限定的时间内回到路边。”
5 3 1 23 45 【样例输出】
1 24 53 【数据规模】 对于 30%的数据,N<=15; 对于 60%的数据,N<=50; 对于全部的数据,N<=10000;
例如在图 2 所示的花生田里,只有位于(2, 5), (3, 7), (4, 2), (5, 4)的植株下长有花生,个数分 别为 13, 7, 15, 9。沿着图示的路线,多多在 21 个单位时间内,最多可以采到 37 个花生。
NOIP历年复赛提高组试题

全国信息学奥林匹克分区联赛(NOIP)复赛提高组试题第一届全国信息学奥林匹克分区联赛(NOIP1995)复赛试题(提高组竞赛用时:3.5小时)1、编码问题设有一个数组A:ARRAY[0..N-1]OFINTEGER;数组中存放的元素为0~N-1之间的整数,且A[i]≠A[j](当i≠j时)。
例如:N=6时,有:A=(4,3,0,5,1,2)此时,数组A的编码定义如下:A[0]的编码为0;A[i]的编码为:在A[0],A[1],…,A[i-1]中比A[i]的值小的个数(i=1,2,…,N-1)∴上面数组A的编码为:B=(0,0,0,3,1,2)程序要求解决以下问题:①给出数组A后,求出其编码。
②给出数组A的编码后,求出A中的原数据。
2、灯的排列问题设在一排上有N个格子(N≤20),若在格子中放置有不同颜色的灯,每种灯的个数记为N1,N2,……N k(k表示不同颜色灯的个数)。
放灯时要遵守下列规则:①同一种颜色的灯不能分开;②不同颜色的灯之间至少要有一个空位置。
例如:N=8(格子数);R=2(红灯数);B=3(蓝灯数),放置的方法有:R-B顺序B-R顺序放置的方法总数为12种。
数据输入的方式为:NP1(颜色,为一个字母)N1(灯的数量)P2 N2……Q(结束标记,Q本身不是灯的颜色)程序要求:求出一种顺序的放置(排列)方案及放置(排列)方案总数。
3、积木块上的数字设有一个四层的积木块,1~4层积木块的数量依次为:5,6,7,8,如下图所示放置:其中,给出第三层与第四层所标示的数字,并已知第三层的数据是由第四层的数据计算出来的。
计算的方法是:第三层的某个数据A是由第四层相邻的两个数据B,C经过某种计算后产生的:计算所用到的计算符为:+,-,⨯,且无优先级之分(自左向右计算),运算符最多为2个。
如:3+4⨯5=35 5⨯4+3=23可以看出,上图中的第三层的数据是由第四层的数据用以下计算公式计算出来的:A=B⨯C+B也就是:8=2⨯3+2,15=3⨯4+3,……14=2⨯6+2程序要求:给出第四层与第三层的数据后,将第一、二层的每块积木标上相应的数据,并输出整个完整的积木图及计算公式。
NOIP2013提高组复赛试题

CCF 全国信息学奥林匹克联赛(NOIP2013)复赛提高组 day11.转圈游戏(circle.cpp/c/pas)【问题描述】n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏。
按照顺时针方向给 n 个位置编号,从 0 到 n-1。
最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,……,依此类推。
游戏规则如下:每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第 1 号位置小伙伴走到第 m+1 号位置,……,依此类推,第n −m号位置上的小伙伴走到第 0 号位置,第n-m+1 号位置上的小伙伴走到第 1 号位置,……,第 n-1 号位置上的小伙伴顺时针走到第m-1 号位置。
现在,一共进行了10^k 轮,请问x 号小伙伴最后走到了第几号位置。
【输入】输入文件名为circle.in。
输入共1 行,包含4 个整数n、m、k、x,每两个整数之间用一个空格隔开。
【输出】输出文件名为c ircle.out。
输出共1行,包含1个整数,表示10k 轮后x号小伙伴所在的位置编号。
【数据说明】对于30%的数据,0 < k < 7;对于80%的数据,0 < k < 107;对于100%的数据,1 < n< 1,000,000,0 <m <n ,0 ≤ x ≤ n,0 < k< 109。
2.火柴排队(match.cpp/c/pas)【问题描述】涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度。
现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为:,其中 ai 表示第一列火柴中第 i 个火柴的高度,bi 表示第二列火柴中第 i 个火柴的高度。
每列火柴中相邻两根火柴的位置都可以交换,请你通过交换使得两列火柴之间的距离最小。
请问得到这个最小的距离,最少需要交换多少次?如果这个数字太大,请输出这个最小交换次数对 99,999,997 取模的结果。
NOIP2004年提高祖初赛试题和答案C

第十届全国青少年信息学奥林匹克联赛初赛试题(提高组c语言二小时完成)一、单项选择题(共10题,每题1.5分,共计15分)1.设全集{a,b,c,d,e,f,g},集合A={a,b,c},B={b,d,e},C={e,f,g},那么集合(A-B)∪(~C∩B)为()。
A.{a,b,c,d}B.{a,b,d,e}C.{b,d,e}D.{b,c,d,e}E.{d,f,g}2.由3个a,5个b和2个c构成的所有字符串中,包含子串"abc"的共有()个。
A.40320B.39600C.840D.780E.603.某个车站呈狭长形,宽度只能容下一台车,并且只有一个出口。
一直某时刻该车站状态为空,从这一时刻开始的出入记录为:"进,出,进,进,出,进,进,进,出,出,进,出",假设车辆入站的顺序为1,2,3......,则车辆出站的顺序为()。
A.1,2,3,4,5B.1,2,4,5,7,C.1,3,5,4,6D.1,3,5,6,7E.1,3,6,5,74.满二叉树的叶节点个数为N,则它的节点总数为()。
A.NB.2*NC.2*N-1D.2*N+1E.2N-15.二叉树T已知其前序遍历序列为1243576,中序遍历序列为4215736,则其后序遍历为()。
A.4257631B.4275631C.4275361D.4723561E.45263716.十进制数100.625等值于二进制数()。
A.1001100.101B.1100100.101C.1100100.011D.1001100.11E.1001100.017.下面哪个部件对于个人桌面电脑的正常运行不是必须的()。
A.CPUB.图形卡(显卡)C.光驱D.主板E.内存8.下列哪个网络上常用的名字缩写是错的()。
A.WWW (World Wide Web)B.URL (Uniform Resource Locator)C.HTTP (Hypertext Transter Protocol)D.FTP (Fast Transger Protocol)E.TCP (Transger Control Protocol)9.用静电吸附墨粉后转移到纸张上,是哪种输出设备的工作方式()。
NOIP2013第十九届全国青少年信息学奥林匹克联赛复赛试题提高组_day2

CCF全国信息学奥林匹克联赛(NOIP2013)复赛提高组 day2(请选手务必仔细阅读本页内容)注意事项: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。
在搭建开始之前,没有任何积木(可以看成n块高度为0的积木)。
接下来每次操作,小朋友们可以选择一段连续区间[L,R],然后将第L块到第R块之间(含第L块和第R块)所有积木的高度分别增加1。
小M是个聪明的小朋友,她很快想出了建造大厦的最佳策略,使得建造所需的操作次数最少。
但她不是一个勤于动手的孩子,所以想请你帮忙实现这个策略,并求出最少的操作次数。
【输入】输入文件为block.in输入包含两行,第一行包含一个整数n,表示大厦的宽度。
第二行包含n个整数,第i个整数为ℎi。
【输出】输出文件为block.out仅一行,即建造所需的最少操作数。
【样例解释】其中一种可行的最佳方案,依次选择[1,5] [1,3] [2,3] [3,3] [5,5]【数据范围】对于30%的数据,有1≤n≤10;对于70%的数据,有1≤n≤1000;对于100%的数据,有1≤n≤100000,0≤ℎi≤10000。
(flower.cpp/c/pas)【问题描述】花匠栋栋种了一排花,每株花都有自己的高度。
花儿越长越大,也越来越挤。
NOIP 2013 提高组初赛试题

【真题】暑假备战CSP-J/S:NOIP2013提高组初赛(第一轮)试题及参考答案(PDF版、无水印可直接打印)资料下载公众号内回复:NOIP2013S,即可获取下载链接,直接打印电子版让孩子做即可,文件包含试题真题参考答案注意:其他比赛年份得资料正在紧张整理中,大家耐心等,整理完毕后,会陆续在公众号内分享。
关注:小码匠和老码农,和小码匠一起携手备战2023年CSP-J/S,祝愿所有孩子们取得好成绩第 1 题一个 32 位整型变量占用()个字节。
A. 4B. 8C. 32D. 128本题共1.5分第 2 题二进制数 11.01 在十进制下是()。
A. 3.25B. 4.125C. 6.25D. 11.125本题共1.5分第 3 题下面的故事与()算法有着异曲同工之妙。
从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‚从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‘从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事....’‛A. 枚举B. 递归C. 贪心D. 分治本题共1.5分第 4 题1948 年,()将热力学中的熵引入信息通信领域,标志着信息论研究的开端。
A. 冯·诺伊曼(John von Neumann)B. 图灵(Alan Turing)C. 欧拉(Leonhard Euler)D. 克劳德·香农(Claude Shannon)本题共1.5分第 5 题已知一棵二叉树有 2013 个节点,则其中至多有()个节点有 2 个子节点。
A. 1006B. 1007C. 1023D. 1024本题共1.5分第 6 题在一个无向图中,如果任意两点之间都存在路径相连,则称其为连通图。
右图是一个有 5 个顶点、8 条边的连通图。
若要使它不再是连通图,至少要删去其中的()条边。
A. 2B. 3C. 4D. 5本题共1.5分第 7 题斐波那契数列的定义如下:F1 = 1, F2 = 1, Fn = Fn – 1 + Fn – 2 (n ≥ 3)。
NOIP2004提高组(pascal)初赛试题及答案

第十届全国青少年信息学奥林匹克联赛初赛试题(提高组 Pascal 语言二小时完成)●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一、单项选择题(共10题,每题1.5分,共计15分。
每题有且仅有一个正确答案.)。
1.设全集I = {a, b, c, d, e, f, g},集合A = {a, b, c},B = {b, d, e},C = {e, f, g},那么集合BA⋂⋃-为()。
C)(~)(BA. {a, b, c, d}B. {a, b, d, e}C. {b, d, e}D. {b, c, d, e}E. {d, f, g}2.由3个a,5个b和2个c构成的所有字符串中,包含子串“abc”的共有()个。
A. 40320B. 39600C. 840D. 780E. 603.某个车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。
已知某时刻该车站状态为空,从这一时刻开始的出入记录为:“进,出,进,进,出,进,进,进,出,出,进,出”。
假设车辆入站的顺序为1,2,3,……,则车辆出站的顺序为()。
A. 1, 2, 3, 4, 5B. 1, 2, 4, 5, 7C. 1, 3, 5, 4, 6D. 1, 3, 5, 6, 7E. 1, 3, 6, 5, 74.满二叉树的叶结点个数为N,则它的结点总数为()。
A. NB. 2 * NC. 2 * N – 1D. 2 * N + 1E. 2N– 15.二叉树T,已知其前序遍历序列为1 2 4 3 5 7 6,中序遍历序列为4 2 1 5 7 3 6,则其后序遍历序列为()。
A. 4 2 5 7 6 3 1B. 4 2 7 5 6 3 1C. 4 2 7 5 3 6 1D. 4 7 2 3 5 6 1E. 4 5 2 6 3 7 16.十进制数100.625等值于二进制数()。
A. 1001100.101B. 1100100.101C. 1100100.011D. 1001100.11E. 1001100.017.下面哪个部件对于个人桌面电脑的正常运行不是必需的()。
NOIP2013提高组复赛试题day1+day2

全国信息学奥林匹克联赛(2013)复赛提高组11.转圈游戏()【问题描述】n 个小伙伴(编号从0 到1)围坐一圈玩游戏。
按照顺时针方向给n 个位置编号,从0 到1。
最初,第0 号小伙伴在第0 号位置,第1 号小伙伴在第1 号位置,……,依此类推。
游戏规则如下:每一轮第0 号位置上的小伙伴顺时针走到第m 号位置,第1 号位置小伙伴走到第1 号位置,……,依此类推,第n − m号位置上的小伙伴走到第0 号位置,第1 号位置上的小伙伴走到第1 号位置,……,第1 号位置上的小伙伴顺时针走到第1 号位置。
现在,一共进行了10k 轮,请问x 号小伙伴最后走到了第几号位置。
【输入】输入文件名为。
输入共1 行,包含4 个整数n、m、k、x,每两个整数之间用一个空格隔开。
【输出】输出文件名为。
输出共1 行,包含1 个整数,表示10k 轮后x 号小伙伴所在的位置编号。
【输入输出样例】10 3 4 55【数据说明】对于30%的数据,0 < k < 7;对于80%的数据,0 < k < 107;对于100%的数据,1 < n< 1,000,000,0 <m <n ,0 ≤ x ≤ n,0 < k< 109。
2.火柴排队()【问题描述】涵涵有两盒火柴,每盒装有n 根火柴,每根火柴都有一个高度。
现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为:,其中表示第一列火柴中第i 个火柴的高度,表示第二列火柴中第i 个火柴的高度。
每列火柴中相邻两根火柴的位置都可以交换,请你通过交换使得两列火柴之间的距离最小。
请问得到这个最小的距离,最少需要交换多少次?如果这个数字太大,请输出这个最小交换次数对99,999,997 取模的结果。
【输入】输入文件为。
共三行,第一行包含一个整数n,表示每盒中火柴的数目。
第二行有n 个整数,每两个整数之间用一个空格隔开,表示第一列火柴的高度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十届全国信息学奥林匹克分区联赛(NOIP2004)复赛试题(提高组竞赛用时:3小时)1、津津的储蓄计划(Save.pas/dpr/c/cpp)【问题描述】津津的零花钱一直都是自己管理。
每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。
为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。
因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。
例如11月初津津手中还有83元,妈妈给了津津300元。
津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。
到了11月月末,津津手中会剩下3元钱。
津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。
有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。
如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。
现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。
如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。
【输入文件】输入文件save.in包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。
【输出文件】输出文件save.out包括一行,这一行只包含一个整数。
如果储蓄计划实施过程中出现某个月钱不够用的情况,输出-X,X表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。
【样例输入1】29023028020030017034050908020060【样例输出1】-7【样例输入2】29023028020030017033050908020060【样例输出2】1580【问题描述】在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。
多多决定把所有的果子合成一堆。
每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。
可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。
多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。
因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。
假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。
例如有3种果子,数目依次为1,2,9。
可以先将1、2堆合并,新堆数目为3,耗费体力为3。
接着,将新堆与原先的第三堆合并,又得到新的堆,数目为12,耗费体力为12。
所以多多总共耗费体力=3+12=15。
可以证明15为最小的体力耗费值。
【输入文件】输入文件fruit.in包括两行,第一行是一个整数n(1<=n<=10000),表示果子的种类数。
第二行包含n个整数,用空格分隔,第i个整数ai(1<=ai<=20000)是第i种果子的数目。
【输出文件】输出文件fruit.out包括一行,这一行只包含一个整数,也就是最小的体力耗费值。
输入数据保证这个值小于231。
【样例输入】3129【样例输出】15【数据规模】对于30%的数据,保证有n<=1000:对于50%的数据,保证有n<=5000;对于全部的数据,保证有n<=10000。
【问题描述】N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。
合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK,则他们的身高满足T1<...<Ti>Ti+1>…>TK(1<=i<=K)。
你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。
【输入文件】输入文件chorus.in的第一行是一个整数N(2<=N<=100),表示同学的总数。
第一行有n个整数,用空格分隔,第i个整数Ti(130<=Ti<=230)是第i位同学的身高(厘米)。
【输出文件】输出文件chorus.out包括一行,这一行只包含一个整数,就是最少需要几位同学出列。
【样例输入】8186 186 150 200 160 130 197 220【样例输出】4【数据规模】对于50%的数据,保证有n<=20;对于全部的数据,保证有n<=100。
4、虫食算(alpha.pas/dpr/c/cpp)【问题描述】所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母。
来看一个简单的例子:43#9865#045+8468#6633其中#号代表被虫子啃掉的数字。
根据算式,我们很容易判断:第一行的两个数字分别是5和3,第二行的数字是5。
现在,我们对问题做两个限制:首先,我们只考虑加法的虫食算。
这里的加法是N进制加法,算式中三个数都有N位,允许有前导的0。
其次,虫子把所有的数都啃光了,我们只知道哪些数字是相同的,我们将相同的数字用相同的字母表示,不同的数字用不同的字母表示。
如果这个算式是N进制的,我们就取英文字母表午的前N个大写字母来表示这个算式中的0到N-1这N个不同的数字:但是这N个字母并不一定顺序地代表0到N-1)。
输入数据保证N个字母分别至少出现一次。
BADC+CBDADCCC上面的算式是一个4进制的算式。
很显然,我们只要让ABCD分别代表0123,便可以让这个式子成立了。
你的任务是,对于给定的N进制加法算式,求出N个不同的字母分别代表的数字,使得该加法算式成立。
输入数据保证有且仅有一组解,【输入文件】输入文件alpha.in包含4行。
第一行有一个正整数N(N<=26),后面的3行每行有一个由大写字母组成的字符串,分别代表两个加数以及和。
这3个字符串左右两端都没有空格,从高位到低位,并且恰好有N位。
【输出文件】输出文件alpha.out包含一行。
在这一行中,应当包含唯一的那组解。
解是这样表示的:输出N个数字,分别表示A,B,C……所代表的数字,相邻的两个数字用一个空格隔开,不能有多余的空格。
【样例输入】5ABCEDBDACEEBBAA【样例输出】10342【数据规模】对于30%的数据,保证有N<=10;对于50%的数据,保证有N<=15;对于全部的数据,保证有N<=26。
第十一届全国信息学奥林匹克分区联赛(NOIP2005)复赛试题(提高组竞赛用时:3小时)1、谁拿了最多奖学金(scholar.pas/c/cpp)【问题描述】某校的惯例是在每学期的期末考试之后发放奖学金。
发放的奖学金共有五种,获取的条件各自不同:1)院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期发表1篇或1篇以上论文的学生均可获得;2)五四奖学金,每人4000元,期末平均成绩高于85分(>85),并且班级评议成绩高于80分(>80)的学生均可获得;3)成绩优秀奖,每人2000元,期末平均成绩高于90分(>90)的学生均可获得;4)西部奖学金,每人1000元,期末平均成绩高于85分(>85)的西部省份学生均可获得;5)班级贡献奖,每人850元,班级评议成绩高于80分(>80)的学生干部均可获得;只要符合条件就可以得奖,每项奖学金的获奖人数没有限制,每名学生也可以同时获得多项奖学金。
例如林的期末平均成绩是87分,班级评议成绩82分,同时他还是一位学生干部,那么他可以同时获得五四奖学金和班级贡献奖,奖金总数是4850元。
现在给出若干学生的相关数据,请计算哪些同学获得的奖金总数最高(假设总有同学能满足获得奖学金的条件)。
【输入文件】输入文件scholar.in的第一行是一个整数N(1 <= N <= 100),表示学生的总数。
接下来的N行每行是一位学生的数据,从左向右依次是,期末平均成绩,班级评议成绩,是否是学生干部,是否是西部省份学生,以及发表的论文数。
是由大小写英文字母组成的长度不超过20的字符串(不含空格);期末平均成绩和班级评议成绩都是0到100之间的整数(包括0和100);是否是学生干部和是否是西部省份学生分别用一个字符表示,Y表示是,N表示不是;发表的论文数是0到10的整数(包括0和10)。
每两个相邻数据项之间用一个空格分隔。
【输出文件】输出文件scholar.out包括三行,第一行是获得最多奖金的学生的,第二行是这名学生获得的奖金总数。
如果有两位或两位以上的学生获得的奖金最多,输出他们之中在输入文件中出现最早的学生的。
第三行是这N个学生获得的奖学金的总数。
【样例输入】4YaoLin 87 82 Y N 0ChenRuiyi 88 78 N Y 1LiXin 92 88 N N 0ZhangQin 83 87 Y N 1【样例输出】ChenRuiyi900028700【问题描述】在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。
在桥上有一些石子,青蛙很讨厌踩在这些石子上。
由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点:0,1,……,L(其中L是桥的长度)。
坐标为0的点表示桥的起点,坐标为L的点表示桥的终点。
青蛙从桥的起点开始,不停的向终点方向跳跃。
一次跳跃的距离是S到T之间的任意正整数(包括S,T)。
当青蛙跳到或跳过坐标为L的点时,就算青蛙已经跳出了独木桥。
题目给出独木桥的长度L,青蛙跳跃的距离围S,T,桥上石子的位置。
你的任务是确定青蛙要想过河,最少需要踩到的石子数。
【输入文件】输入文件river.in的第一行有一个正整数L(1 <= L <= 109),表示独木桥的长度。
第二行有三个正整数S,T,M,分别表示青蛙一次跳跃的最小距离,最大距离,及桥上石子的个数,其中1 <= S <= T <= 10,1 <= M <= 100。
第三行有M个不同的正整数分别表示这M个石子在数轴上的位置(数据保证桥的起点和终点处没有石子)。
所有相邻的整数之间用一个空格隔开。
【输出文件】输出文件river.out只包括一个整数,表示青蛙过河最少需要踩到的石子数。
【样例输入】102 3 52 3 5 6 7【样例输出】2【数据规模】对于30%的数据,L <= 10000;对于全部的数据,L <= 109。
【问题描述】佳佳刚进高中,在军训的时候,由于佳佳吃苦耐劳,很快得到了教官的赏识,成为了“小教官”。