提高组测试题
NOIP2008提高组复赛试题及题解
全国信息学奥林匹克联赛(NOIP2008)复赛提高组一、题目概览二、提交源程序文件名三、编译命令(不包含任何优化开关)四、运行内存限制注意事项:1. 文件名(程序名和输入输出文件名)必须使用大写。
2. C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。
3. 全国统一评测时采用的机器配置为:CPU 1.9GHz,内存512M,上述时限以此配置为准。
各省在自测时可根据具体配置调整时限。
1. 笨小猴(word.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。
【输入输出样例1】【输入输出样例1解释】单词error中出现最多的字母r出现了3次,出现次数最少的字母出现了1次,3-1=2,2是质数。
【输入输出样例2】【输入输出样例2解释】单词olympic中出现最多的字母i出现了2次,出现次数最少的字母出现了1次,2-1=1,1不是质数。
基本的字符串处理,细心一点应该没问题的,不过判断素数时似乎需要考虑下0和1的情况。
var a:array['a'..'z']of integer;s:string;l,i,max,min,n:integer;ch:char;flag:boolean;beginassign(input,'word.in');reset(input);assign(output,'word.out');rewrite(output);readln(s);l:=length(s);fillchar(a,sizeof(a),0);for i:=1 to l doinc(a[s[i]]);max:=0;min:=100;for ch:='a'to 'z' doif a[ch]>0 then beginif a[ch]>max then max:=a[ch];if a[ch]<min then min:=a[ch];end;n:=max-min; flag:=true;if(n=0) or (n=1) then flag:=falseelsefor i:=2 to trunc(sqrt(n)) doif n mod i =0 then begin flag:=false;break;end;if flag then begin writeln('Lucky Word'); writeln(n);endelse begin writeln('No Answer');writeln(0);end;close(output);close(input);end.2. 火柴棒等式(matches.pas/c/cpp)【问题描述】给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。
CSP-S2(提高组)2019第二轮真题
的菜(即LⅥ」道菜)中被使用
1 234578910 6
12
13
14
15 5 6
6 7
78
89
9 10
【样例1输出】
1 3 4 2 5
13 52 4
2 3 145
2 3 4 5 61 7 8 9 10
【样例2】
见选手目录下的 tree/tree2.in 与 tree/tree2.ans。
【数据范围】
测试点编号 n≤ 特殊性质
1 ̄2 10
同理,3位格雷码可以这样推出∶
1.已知2位格雷码为∶00,01,11,10。
2.前四个格雷码为∶000,001,011,010。后四个格雷码为;110.111,101,
100。合并得到∶000,001,011,010,110,111,101,100,编号依次为0 ̄7。 现在给出 n.k,请你求出按上述算法生成的n位格雷码中的k号二进制串。
190
【样例2 解释】
Emiya 必须至少做2道菜。 做 2道菜的符合要求的方案数为100。 做3道菜的符合要求的方案数为 90。 因此符合要求的方案数为 100+90=190。
【样例3输入】
55
10011 01 01 0
1 1 1 1 0
-101 01
01 10 1
【样例3输出】
742
【样例 4】
day1树上的数(tree)
2009NOIP 提高组初赛试题 C语言
2009第十五届全国青少年信息学奥林匹克联赛初赛试题(提高组 C语言二小时完成)●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一.单项选择题(共10题,每题1.5分,共计15分。
每题有且仅有一个正确答案。
)1、关于图灵机下面的说法哪个是正确的:A)图灵机是世界上最早的电子计算机。
B)由于大量使用磁带操作,图灵机运行速度很慢。
C)图灵机只是一个理论上的计算模型。
D)图灵机是英国人图灵发明的,在二战中为破译德军的密码发挥了重要作用。
【分析】选择CA最早的计算机是ENIACB图灵机是计算机模型,没有运行速度,更谈不上磁带操作D图灵机是英国人阿兰图灵提出的理论,阿兰图灵本人在二战中破译德军密码系统发挥重要作用,而不是图灵机发挥作用2、关于BIOS下面的说法哪个是正确的:AA)BIOS是计算机基本输入输出系统软件的简称。
B)BIOS里包含了键盘、鼠标、声卡、图形界面显器等常用输入输出设备的驱动程序。
C)BIOS一般由操作系统厂商来开发完成。
D)BIOS能提供各种文件拷贝、复制、删除以及目录维护等文件管理功能。
其实bios=Basic Input Output System。
但是对于是否是软件这一说法还存在争议呢!B中BIOS只存一些系统启动的基本信息,这些设备的驱动程序是不存的。
C项中BIOS一般是由单独的芯片厂家生产的,最著名的都是台湾的三家。
D项中,固件BIOS根本这些功能3、已知大写字母A的ASCII编码为65(十进制),则大写字母J的十六进制ASCII编码为:D A) 48 B) 49 C) 50 D) 以上都不是41+9=4A 这道题目网上的不一致,我问过我参加考试的学生,应该是这样的。
考的是十六进制加法和细心。
4、在字长为16位的系统环境下,一个16位带符号整数的二进制补码为1111111111101101。
其对应的十进制整数应该是:BA)19 B) -19 C) 18 D) -181111111111101101的原码为1000000000010011 也就是-19,最高位为符号位5、一个包含n个分支结点(非叶结点)的非空满k叉树,k>=1,它的叶结点数目为:DA) nk + 1 B) nk-1 C) (k+1)n-1 D. (k-1)n+1考多叉树的性质,N0=(K-1)N+1,考试的时带入K=2时候,验证二叉树能得到结果6. 表达式a*(b+c)-d的后缀表达式是:BA) abcd*+-B) abc+*d-C) abc*+d-D) -+*abcd主要是考树的遍历,要明白前缀、中缀和后缀表达式。
CSP-S2022提高组第二轮真题
CSP-J/S 2022 第二轮认证提高级第一题假期计划小熊的地图上有n个点,其中编号为1的是它的家、编号为2, 3, …,n的都是景点。
部分点对之间有双向直达的公交线路。
如果点x与z1、z1与z2、……、z k−1与z k、z k与y之间均有直达的线路,那么我们称x与y之间的行程可转车k次通达;特别地,如果点x与y之间有直达的线路,则称可转车0次通达。
很快就要放假了,小熊计划从家出发去4个不同的景点游玩,完成5段行程后回家:家→景点A→景点B→景点C→景点D→家且每段行程最多转车k次。
转车时经过的点没有任何限制,既可以是家、也可以是景点,还可以重复经过相同的点。
例如,在景点A→景点B的这段行程中,转车时经过的点可以是家、也可以是景点C,还可以是景点D→家这段行程转车时经过的点。
假设每个景点都有一个分数,请帮小熊规划一个行程,使得小熊访问的四个不同景点的分数之和最大。
【输入样例】8 8 19 7 1 8 2 3 61 22 33 44 55 66 77 88 1【输出样例】27【样例解释】当计划的行程为1→2→3→5→7→1 时,4个景点的分数之和为9 + 7 + 8 + 3 = 27,可以证明其为最大值。
行程1→3→5→7→8→1的景点分数之和为24,行程1→3→2→8→7→1的景点分数之和为25。
它们都符合要求,但分数之和不是最大的。
行程1→2→3→5→8→1的景点分数之和为30。
但其中5→8至少需要转车2次,因此不符合最多转车k = 1次的要求。
行程1→2→3→2→3→1的景点分数之和为32,但游玩的并非4个不同的景点,因此也不符合要求。
【数据范围】对于所有数据,保证5≤n≤2500,1≤m≤10000, 0≤k≤100,所有景点的分数1≤s i≤1018。
保证至少存在一组符合要求的行程。
第二题策略游戏题目描述小L和小Q在玩一个策略游戏。
有一个长度为n的数组A和一个长度为m的数组B,在此基础上定义一个大小为n×m的矩阵C,满足C ij=A i×B j。
CSP-S2(提高组)2020第二轮真题
2020年CCF非专业级软件能力认证提高级第二轮2020 CCF CSP-S2时间:2020年11月7日14:30 ∼18:30注意事项(请选手仔细阅读)1. 文件名(程序名和输入输出文件名)必须使用英文小写。
2. C/C++ 中函数main() 的返回值类型必须是int,程序正常结束时的返回值必须是0。
3. 提交的程序代码文件的放置位置请参照各省的具体要求。
4. 因违反以上三点而出现的错误或问题,申诉时一律不予受理。
5. 若无特殊说明,结果的比较方式为全文比较(过滤行末空格及文末回车)。
6. 程序可使用的栈内存空间限制与题目的内存限制一致。
7. 全国统一评测时采用的机器配置为:Intel(R) Core(TM) i7-8700K CPU @3.70GHz,内存32GB。
上述时限以此配置为准。
8. 只提供Linux格式附加样例文件。
9. 评测在当前最新公布的NOI Linux下进行,各语言的编译器版本以其为准。
儒略日(julian)【题目描述】为了简便计算,天文学家们使用儒略日(Julian day)来表达时间。
所谓儒略日,其定义为从公元前4713年1月1日正午12点到此后某一时刻间所经过的天数,不满一天者用小数表达。
若利用这一天文学历法,则每一个时刻都将被均匀的映射到数轴上,从而得以很方便的计算它们的差值。
现在,给定一个不含小数部分的儒略日,请你帮忙计算出该儒略日(一定是某一天的中午12点)所对应的公历日期。
我们现行的公历为格里高利历(Gregorian calendar),它是在公元1582年由教皇格里高利十三世在原有的儒略历(Julian calendar)的基础上修改得到的(注:儒略历与儒略日并无直接关系)。
具体而言,现行的公历日期按照以下规则计算:1. 公元1582年10月15日(含)以后:适用格里高利历,每年一月31天、二月28天或29天、三月31天、四月30天、五月31天、六月30天、七月31天、八月31天、九月30天、十月31天、十一月30天、十二月31天。
第22届全国青少年信息学奥林匹克联赛NOIP2016提高组试题day1
第22届全国青少年信息学奥林匹克联赛CCF-NOIP-2016提高组(复赛)第一试竞赛时间:2016年11月19日8:30〜12:001.文件名(程序名和输入输出文件名)必须使用英文小写。
2.除非特殊说明,结果比较方式均为忽略行末空格及文末回车的全文比较。
3.C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。
4.全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) Ⅱ X2 240 processor 2.8GHz,内存4G,上述时限以此配置为准。
5.只提供Linux格式附加样例文件。
6.评测在NOI Linux下进行。
7.编译时不打开任何优化选项。
玩具谜题(toy)【问题描述】小南有一套可爱的玩具小人,它们各有不同的职业。
有一天,这些玩具小人把小南的眼镜藏了起来。
小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外。
如下图:这时singer告诉小南一个谜题:“眼镜藏在我左数第3个玩具小人的右数第1个玩具小人的左数第2个玩具小人那里。
”小南发现,这个谜题中玩具小人的朝向非常关键,因为朝内和朝外的玩具小人的左右方向是相反的:面朝圈内的玩具小人,它的左边是顺时针方向,右边是逆时针方向;而面向圈外的玩具小人,它的左边是逆时针方向,右边是顺时针方向。
小南一边艰难地辨认着玩具小人,一边数着:“singer”朝内,左数第3个是archer。
“archer”朝外,右数第1个是thinker。
“thinker”朝外,左数第2个是writer。
“所以眼镜藏在writer这里!”虽然成功找回了眼镜,但小南并没有放心。
如果下次有更多的玩具小人藏他的眼镜,或是谜题的长度更长,他可能就无法找到眼镜了。
所以小南希望你写程序帮他解决类似的谜题。
这样的谜题具体可以描述为:有n个玩具小人围成一圈,已知它们的职业和朝向。
现在第1个玩具小人告诉小南一个包含m条指令的谜题,其中第i条指令形如“左数/右数第s i个玩具小人”。
noip2017提高组试题(day1+day2)-Word版
全国信息学奥林匹克联赛(2017)复赛提高组 1(请选手务必仔细阅读本页内容)一.题目概况注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。
2、中函数 ()的返回值类型必须是,程序正常结束时的返回值必须是 0。
3、全国统一评测时采用的机器配置为: () x2 240 ,2.8,内存 4G,上述时限以此配置为准。
4、只提供格式附加样例文件。
5、提交的程序代码文件的放置位置请参照各省的具体要求。
6、特别提醒:评测在当前最新公布的下进行,各语言的编译器版本以其为准。
【问题描述】1.小凯的疑惑()小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。
每种金币小凯都有无数个。
在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。
现在小凯想知道在无法准确支付的物品中,最贵的价值是多少金币?注意:输入数据保证存在小凯无法准确支付的商品。
【输入格式】输入文件名为。
输入数据仅一行,包含两个正整数 a 和 b,它们之间用一个空格隔开,表示小凯手中金币的面值。
【输出格式】输出文件名为。
输出文件仅一行,一个正整数 N,表示不找零的情况下,小凯用手中的金币不能准确支付的最贵的物品的价值。
【输入输出样例 1】见选手目录下的 1 和 1。
【输入输出样例 1 说明】小凯手中有面值为3 和7 的金币无数个,在不找零的前提下无法准确支付价值为1、2、4、5、8、11 的物品,其中最贵的物品价值为 11,比 11 贵的物品都能买到,比如:12 = 3 * 4 + 7 * 013 = 3 * 2 + 7 * 114 = 3 * 0 + 7 * 215 = 3 * 5 + 7 * 0……【输入输出样例 2】见选手目录下的 2 和 2。
【数据规模与约定】对于 30%的数据: 1 ≤ a,b ≤ 50。
对于 60%的数据: 1 ≤ a,b ≤ 10,000。
对于 100%的数据:1 ≤ a,b ≤ 1,000,000,000。
学军中学NOIP2013提高组原创模拟题day2
学军中学NOIP2013提高组原创模拟题day2测试时间:3.5小时注意事项:1.评测时采用的机器配置为:CPU T83002.40GHz,内存4G。
2.某些题目数据量大,请C++选手谨慎使用cin读入数据。
1.完全平方数(number.cpp/c/pas)【问题描述】一个数如果是另一个整数的完全平方,那么我们就称这个数为完全平方数(Pefect Sqaure),也称平方数。
小A认为所有的平方数都是很perfect的~于是他给了小B一个任务:用任意个不大于n的不同的正整数相乘得到完全平方数,并且小A 希望这个平方数越大越好。
请你帮助小B告诉小A满足题意的最大的完全平方数。
【输入】输入文件名为number.in输入仅1行,一个数n。
【输出】输出文件名为number.out输出仅1行,一个数表示答案。
由于答案可以很大,所以请输出答案对100000007取模后的结果。
【输入输出样例1】number.in7number.out144【输入输出样例解释1】144=2×3×4×6,是12的完全平方。
【输入输出样例2】number.in9number.out5184【输入输出样例解释2】5184=3×4×6×8×9,是72的完全平方。
【数据范围】对于20%的数据,0<n≤100;对于50%的数据,0<n≤5,000;对于70%的数据,0<n≤100,000;对于100%的数据,0<n≤5,000,000。
2.卡片游戏(game.cpp/c/pas)【问题描述】小D举办了元旦联欢活动,其中有一个卡片游戏。
游戏的规则是这样的:有n张卡片,每张卡片上正面写着一个小于等于100的正整数a i,反面都是一样的花色。
这n张卡片正面朝下叠成一堆,玩这个游戏的人从中可以抽出连续的k(1≤k≤n)张卡片。
如果对于这k张卡片上的数字的平均值a,满足l<=a<=r,那他就可以获得小礼物一件。
NOIP2015提高组复赛试题
【输入输出样例1】 substring.in
6 3 1
aabaab
aab
substring.out
互
【输入输出样例2】
substring.in
632
aabaab
aab
substring.out
t
【输入输出样例说明】
所有合法方案如下∶(加下划线的部分表示取出的子串)
样例1∶aab aab / aab aab
测试点编号
“工
区
[3
问
100 仰
[100
100 100
100
区el
吕=I
亡
13
二
[15
100 二
100 [15
10 [16
[10
10
[1187
K 闷
了89
10
100
100
100
100
八闷1闪2
100 13
16 18
邻20
10 [19
10
10
分21
10有的手牌都是随机生成的。
1.若(K-1)在第一行但不在最后一列,则将K填在最后一行,(K-1)所在列
的右一列;
2. 若(K-1)在最后一列但不在第一行,则将K填在第一列,(K-1)所在行的上
一行∶
3. 若(K-1)在第一行最后一列,则将K填在(K-1)的正下方∶
4.若(K-1)既不在第一行,也不在最后一列,如果(K-1)的右上方还未填数,
的位置不同也认为是不同的方案。
【输入格式】
第一行是三个正整数n,m,k,分别表示字符串A的长度,字符串B的长度,以及问
题描述中所提到的k,每两个整数之间用一个空格隔开。
noip2017提高组试题day1day2Word版
全国信息学奥林匹克联赛(2017)复赛提高组 1(请选手务必仔细阅读本页内容)一.题目概况二.提交源程序文件名三.编译命令(不包含任何优化开关)注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。
2、中函数 ()的返回值类型必须是,程序正常结束时的返回值必须是 0。
3、全国统一评测时采用的机器配置为: () x2 240 ,2.8,内存 4G,上述时限以此配置为准。
4、只提供格式附加样例文件。
5、提交的程序代码文件的放置位置请参照各省的具体要求。
6、特别提醒:评测在当前最新公布的下进行,各语言的编译器版本以其为准。
【问题描述】1.小凯的疑惑()小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。
每种金币小凯都有无数个。
在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。
现在小凯想知道在无法准确支付的物品中,最贵的价值是多少金币?注意:输入数据保证存在小凯无法准确支付的商品。
【输入格式】输入文件名为。
输入数据仅一行,包含两个正整数 a 和 b,它们之间用一个空格隔开,表示小凯手中金币的面值。
【输出格式】输出文件名为。
输出文件仅一行,一个正整数 N,表示不找零的情况下,小凯用手中的金币不能准确支付的最贵的物品的价值。
【输入输出样例 1】【输入输出样例 1 说明】小凯手中有面值为3 和7 的金币无数个,在不找零的前提下无法准确支付价值为1、2、4、5、8、11 的物品,其中最贵的物品价值为 11,比 11 贵的物品都能买到,比如:noip2017提高组试题day1day2Word版12 = 3 * 4 + 7 * 013 = 3 * 2 + 7 * 114 = 3 * 0 + 7 * 215 = 3 * 5 + 7 * 0……【输入输出样例 2】见选手目录下的 2 和 2。
【数据规模与约定】对于 30%的数据:1 ≤ a,b ≤ 50。
对于 60%的数据:1 ≤ a,b ≤ 10,000。
NOIP2016提高组复赛试题(Day1+Day2)
第22 届全国青少年信息学奥林匹克联赛2016提高组(复赛)第一试竞赛时间:2016 年11 月19 日 8:30 ∼ 12:00提交源程序文件名编译选项注意事项:1. 文件名(程序名和输入输出文件名)必须使用英文小写。
2. 除非特殊说明,结果比较方式均为忽略行末空格及文末回车的全文比较。
3. 中函数()的返回值类型必须是,程序正常结束时的返回值必须是0。
4. 全国统一评测时采用的机器配置为: () x2 240 ,2.8,内存4G,上述时限以此配置为准。
5. 只提供格式附加样例文件。
6. 评测在下进行。
7. 编译时不打开任何优化选项。
玩具谜题()【问题描述】小南有一套可爱的玩具小人,它们各有不同的职业。
有一天,这些玩具小人把小南的眼镜藏了起来。
小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外。
如下图:这时告诉小南一个谜题:“眼镜藏在我左数第3 个玩具小人的右数第1 个玩具小人的左数第2 个玩具小人那里。
”小南发现,这个谜题中玩具小人的朝向非常关键,因为朝内和朝外的玩具小人的左右方向是相反的:面朝圈内的玩具小人,它的左边是顺时针方向,右边是逆时针方向;而面向圈外的玩具小人,它的左边是逆时针方向,右边是顺时针方向。
小南一边艰难地辨认着玩具小人,一边数着:“朝内,左数第3 个是。
“朝外,右数第1 个是。
“朝外,左数第2 个是。
“所以眼镜藏在这里!”虽然成功找回了眼镜,但小南并没有放心。
如果下次有更多的玩具小人藏他的眼镜,或是谜题的长度更长,他可能就无法找到眼镜了。
所以小南希望你写程序帮他解决类似的谜题。
这样的谜题具体可以描述为:有n 个玩具小人围成一圈,己知它们的职业和朝向。
现在第 1个玩具小人告诉小南一个包含m 条指令的谜题,其中第i 条指令形如“左数/右数第个玩具小人”。
你需要输出依次数完这些指令后,到达的玩具小人的职业。
【输入格式】从文件中读入数据。
输入的第一行包含两个正整数,表示玩具小人的个数和指令的条数。
2019CSP-S(提高组)复赛试卷day2
【输入格式】
从文件 meal.in 中读入数据。 第 1 行两个用单个空格隔开的整数 n, m。 第 2 行至第 n + 1 行,每行 m 个用单个空格隔开的整数,其中第 i + 1 行的 m 个 数依次为 ai,1, ai,2, . . . , ai,m。
2019 年 CCF 非专业级软件能力认证第二轮 提高级
2019 CCF CSP-S2
day2
时间:2019 年 11 月 17 日 08:30 ∼ 12:00
题目名称 题目类型 目录 可执行文件名 输入文件名 输出文件名 每个测试点时限 内存限制 子任务数目 测试点是否等分
Emiya 家今天的饭 传统型 meal meal meal.in meal.out 1.0 秒 256 MiB 25 是
【输出格式】
输出到文件 meal.out 中。 仅一行一个整数,表示所求方案数对 998, 244, 353 取模的结果。
【样例 1 输入】
23 101 011
第 3 页 共 11 页
2019 年 CCF 非专业级软件能力认证第二轮提高级
【样例 1 输出】
3
day2 Emiya 家今天的饭(meal)
2019 年 CCF 非专业级软件能力认证第二轮提高级
day2
6. 程序可使用的栈内存空间限制与题目的内存限制一致。 7. 全 国 统 一 评 测 时 采 用 的 机 器 配 置 为:Intel(R) Core(TM) i7-8700K CPU @
3.70GHz,内存 32GB。上述时限以此配置为准。 8. 只提供 Linux 格式附加样例文件。 9. 评测在当前最新公布的 NOI Linux 下进行,各语言的编译器版本以其为准。 10. 最终评测时所用的编译命令中不含任何优化开关。 11. ∑ 是求和运算符, ∑n ai 的值等于 a1 + a2 + · · · + an。
NOIP2011 提高组 试题 Day2
对于 40%的数据,2 ≤ n ≤ 50,1 ≤ m ≤ 1,000,0 ≤ k ≤ 20,0 ≤ Di ≤ 10,0 ≤ Ti ≤ 500; 对于 60%的数据,1 ≤ n ≤ 100,1 ≤ m ≤ 1,000,0 ≤ k ≤ 100,0 ≤ Di ≤ 100,0 ≤ Ti ≤ 10,000; 对于 100%的数据,1 ≤ n ≤ 1,000,1 ≤ m ≤ 10,000,0 ≤ k ≤ 100,000,0 ≤ Di ≤ 100, 0 ≤ Ti ≤ 100,000。
对于 C 语言
factor.c
对于 pascal 语言
factor.pas
qc.cpp qc.c
qc. Pas
bus.cpp bus.c bus. pas
三.编译命令(不包含任何优化开关)
对于 C++语言
g++ -o factor
g++ -o qc qc.cpp
factor.cpp -lm
–lm
对于 C 语言
第1页共4页
全国信息学奥林匹克联赛(NOIP2011)复赛
提高组 day2
1.计算系数
【问题描述】
(factor.cpp/c/pas)
给定一个多项式 (ax + by)k ,请求出多项式展开后 xn y m 项的系数。
【输入】 输入文件名为 factor.in。 共一行,包含 5 个整数,分别为 a,b,k,n,m,每两个整数之间用一个空格隔开。
往第 i+1 个景点所需要的时间,即 Di。 第 3 行至 m+2 行每行 3 个整数 Ti, Ai, Bi,每两个整数之间用一个空格隔开。第 i+2 行表
语言提高组第二次测试题答案版
语言提高组第二次测试题2018-7-14第一题.收集瓶盖赢大奖(提交文件名:reward.cpp )(100分)【问题描述】某饮料公司最近推出了一个“收集瓶盖赢大奖”的活动:如果你拥有10个印有“幸运”、或20个印有“鼓励”的瓶盖,就可以兑换一个神秘大奖。
现分别给出你拥有的印有“幸运”和“鼓励”的瓶盖数,判断是否可以去兑换大奖。
【输入】输入文件名为reward.in。
第一行,一个正整数n,表示接下来有n行数据;以下n行,每行包含两个整数,分别是印有“幸运”和“鼓励”的瓶盖数,用一个空格隔开。
【输出】输出文件名为reward.out。
对于每行数据输出一行。
若可以兑换大奖,输出True,否则输出False。
【输入输出样例】【数据范围】对于50%的数据:n<=1000;对于100%的数据:n<=10000。
第四题、生日(提交文件:birthday.cpp)(100分)【问题描述】小甜甜的生日是YYYY年MM月DD日,她想知道自己出生后第一万天纪念日的日期(出生日算第0天)。
【输入】输入文件名为birthday.in。
从文件的第一行分别读入YYYY,MM,DD,其中1949<=YYYY<=2018,日期绝对合法。
【输出】输出文件名为birthday.out。
输出文件只有一行,即小甜甜生日第一万天以后的日期,格式为:YYYY-MM-DD 。
【输入样例】2016 10 31 【输出样例】2044-3-18语言提高组第二次测试题参考答案【第一题】#include<stdio.h>int main(){int x,y,n;freopen("reward.in","r",stdin);freopen("reward.out","w",stdout); scanf("%d",&n);for (int i=1;i<=n;i++){scanf("%d%d",&x,&y);if((x>=10)||(y>=20))printf("True\n");elseprintf("False\n");}fclose(stdin);fclose(stdout);return 0;}【第二题】#include<iostream>using namespace std;int main(){char ch,ch1;freopen("tuxing.in","r",stdin);freopen("tuxing.out","w",stdout); cin>>ch;ch1=ch;for (char i='A';i<=ch;i++){for (char h='A';h<i;h++)cout<<" ";for (char j=ch1;j>='A';j--)cout<<j;ch1--;for (char k='A';k<=ch1;k++)cout<<k;cout<<endl;}fclose(stdin);fclose(stdout);}【第三题】#include<iostream>#include<cstdio>using namespace std;int main(){freopen("shulie.in","r",stdin);freopen("shulie.out","w",stdout);int n,p=4,q=7,t;double sum=0;scanf("%d",&n);for(int i=0;i<n;i++){sum+=1.0*p/q;//cout<<p<<"/"<<q<<" ";t=p;p=q;q=t+q;}printf("%d/%d\n%.2lf",t,q-t,sum);fclose(stdin);fclose(stdout);}【第四题】#include<iostream>#include<cstdio>using namespace std;int rn(int y){if ((y % 400==0)||(y % 100!=0)&&(y % 4==0)) return 1;else return 0;}int days(int n,int y){switch(y){case 1:case 3:case 5:case 7:case 8:case 10:case 12:return 31;break;case 4:case 6:case 9:case 11:return 30;break;case 2:if (rn(n)) return 29;else return 28;}}int main(){freopen("birthday.in","r",stdin);freopen("birthday.out","w",stdout);int yy,mm,dd,s;scanf("%d%d%d",&yy,&mm,&dd);dd=dd+10000;s=days(yy,mm);while (dd>s){dd-=s;mm++;if (mm==13) {mm=1;yy++;}s=days(yy,mm);}printf("%d-%d-%d",yy,mm,dd);fclose(stdin);fclose(stdout);return 0;}【第五题】#include<iostream>#include<cstdio>#include<algorithm>using namespace std;struct score{string name;int shuxue;int yuwen;int yingyu;int dili;int zongfen;};int cmp(score a,score b){return a.zongfen>b.zongfen;}int main(){freopen("pjiang.in","r",stdin);freopen("pjiang.out","w",stdout);int n;score stu[50];scanf("%d",&n);for(int i=0;i<n;i++){cin>>stu[i].name>>stu[i].shuxue>>stu[i].yuwen> >stu[i].yingyu>>stu[i].dili;stu[i].zongfen=stu[i].shuxue+stu[i].yuwen+stu[ i].yingyu+stu[i].dili;}sort(stu,stu+n,cmp);for(int i=0;i<3;i++){cout<<stu[i].name<<endl;}fclose(stdin);fclose(stdout);return 0;}。
NOIP2018提高组复赛试题
为0。 【输入格式】
输入文件包含两行,第一行包含一个整数 n,表示道路的长度。
第二行包含 n 个整数,相邻两数间用一个空格隔开,第 i个整数为d;。
【输出格式】
【输入格式】
输入文件的第一行包含一个整数 T,表示数据的组数。接下来按照如下格式分别给
出T组数据。
每组数据的第一行包含一个正整数 n。接下来一行包含 n 个由空格隔开的正整数
a[i]。
【输出格式】
输出文件共有T行,对于每组数据,输出一行一个正整数,表示所有与(n,a)等
价的货币系统(m,b)中,最小的 m。
6了
斗
功9
≤5
≤10 ≤15
≤1000
=1
≤n-1
=1
否
愿是
是
≤300
否
否
是
否
≤50,00
是
≤1000
是
否 是
否
10 ≤300
是
1 ≤50,000
12
13
14
15
≤50
≤200 ≤n-1 否
是1617≤1,000否18 19
≤30,00
否
20 ≤5000
其中,"分支不超过3"的含义为∶每个路口至多有3条道路与其相连。
n 【数据规模与约定】
测试点 己 车 测1试1点
a
”句34
67
9各
10
=2
12
13
14
=3
≤100
15
16
=4
NOI Online能力测试3提高组题解
第37卷 第1期 福 建 电 脑 Vol. 37 No.12021年1月Journal of Fujian ComputerJan. 2021———————————————黄志刚,男,1977年生,主要研究领域为中学信息技术教育、信息学奥林匹克竞赛指导,信息学奥赛金牌教练。
E-mail:****************。
NOI Online 能力测试 3 提高组题解黄志刚(海亮高级中学 浙江 诸暨 311800)摘 要 题目来源于中国计算机学会第三场NOI Online 能力测试提高组试题。
本文对三个问题的解题思路及算法设计作了较为详细的描述,并给出相应的代码。
关键词 题解;分析;算法;代码中图法分类号 TP31 DOI:10.16707/ki.fjpc.2021.01.072The Solutions for the NOI Online Contest 3 for SeniorsHUANG Zhigang(Hailiang Senior Middle School, Zhuji, China, 311800)1 水壶(kettle )1.1 问题描述有 n 个容量无穷大的水壶,它们从 1 ∼ n 编号,初始时 i 号水壶中装有 Ai 单位的水。
你可以进行不超过 k 次操作,每次操作需要选择一个满足 1 ≤ x ≤ n − 1 的编号 x ,然后把 x 号水壶中的水全部倒入 x + 1 号水壶中。
最后你可以任意选择恰好一个水壶,并喝掉水壶中所有的水。
现在请你求出,你最多能喝到多少单位的水。
时间限制: 1.0 秒 空间限制: 256 MB 1.1.1输入格式第一行一个正整数n ,表示水壶的个数。
第二行一个非负整数 k ,表示操作次数上限。
第三行 n 个非负整数,相邻两个数用空格隔开,表示水壶的初始装水量 A1, A2, ⋯ , An 。
1.1.2输出格式一行,仅一个非负整数,表示答案。
1.1.3样例1输入10 5890 965 256 419 296 987 45 676 976 7421.1.4 样例1输出38131.1.5数据范围与提示对于10% 的数据,满足 1 ≤ n ≤ 10。
2023CSP-S(提高组)复赛试题
CSP-S(提高级)2023复赛试题第一题密码锁(lock)题目描述小Y有一把五个拨圈的密码锁。
如图所示,每个拨圈上是从0到9的数字。
每个拨圈都是从0到9的循环,即9拨动一个位置后可以变成0或8,因为校园里比较安全,小Y采用的锁车方式是:从正确密码开始,随机转动密码锁仅一次;每次都是以某个幅度仅转动一个拨圈或者同时转动两个相邻的拨圈。
当小Y选择同时转动两个相邻拨圈时,两个拨圈转动的幅度相同,即小Y可以将密码锁从0 0115转成11115,但不会转成12115。
时间久了,小Y也担心这么锁车的安全性,所以小Y记下了自己锁车后密码锁的n 个状态,注意这n个状态都不是正确密码。
为了检验这么锁车的安全性,小Y有多少种可能的正确密码,使得每个正确密码都能够按照他所采用的锁车方式产生锁车后密码锁的全部n个状态。
【输入格式】输入的第一行包含一个正整数n,表示锁车后密码锁的状态数。
接下来n行每行包含五个整数,表示一个密码锁的状态。
【输出格式】输出一行包含一个整数,表示密码锁的这n个状态按照给定的锁车方式能对应多少种正确密码。
【输入样例】100115【输出样例】81说明/提示【样例解释】一共有81种可能的方案。
其中转动一个拨圈的方案有45种,转动两个拨圈的方案有36种。
【数据范围】对于所有测试数据有:1≤n≤8。
测试点n≤特殊性质1~31无4~52无6~88A9~108无特殊性质A:保证所有正确密码都可以通过仅转动一个拨圈得到测试数据给出的n个状态。
第三题结构体(struct)题目背景在C++等高级语言中,除了int 和float 等基本类型外,通常还可以自定义结构体类型。
在本题当中,你需要模拟一种类似C++的高级语言的结构体定义方式,并计算出相应的内存占用等信息。
【题目描述】在这种语言中,基本类型共有4种:byte,short,int,long,分别占据1,2,4,8字节的空间。
定义一个结构体类型时,需要给出类型名和成员,其中每个成员需要按顺序给出类型和名称。
NOIP2007提高组试题及解析
NOIP2007提高组试题及解析1.统计数字(count.pas/c/cpp)【问题描述】某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。
已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。
【输入】输入文件count.in包含n+1行;第一行是整数n,表示自然数的个数;第2~n+1每行一个自然数。
【输出】输出文件count.out包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。
每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。
【输入输出样例】count.in8242451002100count.out2 34 25 1100 2【限制】40%的数据满足:1<=n<=100080%的数据满足:1<=n<=50000100%的数据满足:1<=n<=200000,每个数均不超过1500 000 000(1.5*109)【解题思想1】显然,此题可以用排序的方法来解决,根据n的范围,可以看出,O(nlogn)的算法是可以接受的。
【解题思想2】维护一个二叉树,以数的大小作为节点的权值,以数的重复次数作为节点的附加信息。
之后中序遍历即可。
看起来,树内的节点个数应该不到n,所以可能表现不错,其算法复杂度依然为O(nlogn)【实际数据规模】挺小的,而且也没有传说中的卡Qsort的数据,全部都很温柔。
【分析】这个题目实在不能说是一道TG组的好题。
实际上,个人认为题目最大的意义在于:提供了10个测试排序算法的不怎么特别好的数据。
话说回来,此题是送分题,但是送分题送的这么水,考察的也就只有OIers的细心程度了。
在考试的时候,要相信有简单的题目,要相信有直接的算法。
在我的身边就有几个同学因为这个题目与一等失之交臂,这是最可惜的事情。
var a:array[1..200001] of longint;i,j,k,m,n:longint;procedure qsort(s,t:longint);var i,j,mid,temp:longint;begini:=s;j:=t;mid:=a[(s+t) div 2];while i<=j dobeginwhile a[i]<mid do inc(i);while a[j]>mid do dec(j);if i<=j thenbegintemp:=a[i];a[i]:=a[j];a[j]:=temp;inc(i);dec(j);end;end;if i<t then qsort(i,t);if j>s then qsort(s,j);end;beginreadln(n);for i:=1 to n do readln(a[i]);qsort(1,n);a[n+1]:=maxlongint;k:=1;for i:=2 to n+1 doif a[i]<>a[i-1] thenbegin writeln(a[i-1],' ',k); k:=1;endelse k:=k+1;end.2.字符串的展开(expand.pas/c/cpp)【问题描述】在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或者“4-8”的字串,我们就把它当作一种简写,输出时,用连续递增的字母获数字串替代其中的减号,即,将上面两个子串分别输出为“defgh”和“45678”。
CSP-S2(提高组)2021第二轮真题
简单的模板题也太小儿科了,于是他把这题进行了加强之后顺手扔给了小c。 具体而言,小w定义"超级括号序列"是由字符(、)、*组成的字符串,并且对
于某个给定的常数k,给出了"符合规范的超级括号序列"的定义如下∶ 1、()、(5)均是符合规范的超级括号序列,其中S表示任意一个仅由不超过k
am+2
m+]
哆
维2
“宫言马
2m-e 菲 Ja3》
2en
Gxml -0
图2∶射线的编号
对于每次询问,不同附加点所在的射线互不相同。每个附加点和最近的格点之间的
线段也称为一条边,也有非负整数边权(注意,在角上的格点有可能和两个附加点同时
相连)。
给定每个附加点的颜色(黑色或者白色),请你将网格内每个格点的颜色染成黑自白
需要注意的是,本题中廊桥的使用遵循"先到先得"的原则,如果国际区只有1个 廊桥,那么将被飞机(1,19)占用,而不会被(3,4)、(5,6)、(7,8)、(9,10)这 4架飞机先后使用。
【数据范围】
对于20??数据,1≤n ≤100,1≤m1+m2≤100。 对于40??数据,1≤n ≤5000,1≤m1+m2≤5000。 对于100??数据,1≤n≤100000,1≤m1+ma≤100000。
保证对于每个i∈ 【1,T】,Pg互不相同。
【样例1输入】
r eNm世u公un
m4124 5 3 1235
3 21213
【【样例1输出】
H LRRLLRRL
包-1
【样例1 解释】 在第一组数据中,生成的的b数列是4 53122135 4,可以看出这是一个
回文数列。 另一种可能的操作方案是 LRRLLRRRR,但比答案方案的字典序要大。
CSP-S 2019第二轮认证(原NOIP提高组复赛)试题
2019 年 CCF 非专业级软件能力认证第二轮提高级
day1
6. 程序可使用的栈内存空间限制与题目的内存限制一致。 7. 全 国 统 一 评 测 时 采 用 的 机 器 配 置 为:Intel(R) Core(TM) i7-8700K CPU @
将根到 5 号结点的简单路径上的括号,按经过顺序排列所组成的字符串为 ((),子 串是合法括号串的个数为 1。
【样例 2】
见选手目录下的 brackets/brackets2.in 与 brackets/brackets2.ans。
第 6 页 共 10 页
2019 年 CCF 非专业级软件能力认证第二轮提高级
特殊性质
fi = i − 1
无 fi = i − 1
无
第 7 页 共 10 页
2019 年 CCF 非专业级软件能力认证第二轮提高级
树上的数(tree)
day1 树上的数(tree)
【题目描述】
给定一个大小为 n 的树,它共有 n 个结点与 n − 1 条边,结点从 1 ∼ n 编号。初始 时每个结点上都有一个 1 ∼ n 的数字,且每个 1 ∼ n 的数字都只在恰. 好. 一个结点上出现。
显然 si 是个括号串,但不一定是合法括号串,因此现在小 Q 想对所有的 (i 1 ≤ i ≤ n) 求出,si 中有多少个互. 不. 相. 同. 的. 子. 串. 是合. 法. 括. 号. 串. 。
这个问题难倒了小 Q,他只好向你求助。设 si 共有 ki 个不同子串是合法括号串, 你只需要告诉小 Q 所有 i × ki 的异或和,即:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
寻宝(treasure.cpp)noip2012普及t2【题目描述】传说很遥远的藏宝楼顶层藏着诱人的宝藏。
小明历尽千辛万苦终于找到传说中的这个藏宝楼,藏宝楼的门口竖着一个木板,上面写有几个大字:寻宝说明书。
说明书的内容如下:藏宝楼共有N+1层,最上面一层是顶层,顶层有一个房间里面藏着宝藏。
除了顶层外,藏宝楼另有N层,每层M个房间,这M个房间围成一圈并按逆时针方向依次编号为0,…,M-1。
其中一些房间有通往上一层的楼梯,每层楼的楼梯设计可能不同。
每个房间里有一个指示牌,指示牌上有一个数字x,表示从这个房间开始按逆时针方向选择第x个有楼梯的房间(假定该房间的编号为k),从该房间上楼,上楼后到达上一层的k号房间。
比如当前房间的指示牌上写着2,则按逆时针方向开始尝试,找到第2个有楼梯的房间,从该房间上楼。
如果当前房间本身就有楼梯通向上层,该房间作为第一个有楼梯的房间。
寻宝说明书的最后用红色大号字体写着:“寻宝须知:帮助你找到每层上楼房间的指示牌上的数字(即每层第一个进入的房间内指示牌上的数字)总和为打开宝箱的密钥”。
请帮助小明算出这个打开宝箱的密钥。
【输入格式】第一行2个整数N和M,之间用一个空格隔开。
N表示除了顶层外藏宝楼共N层楼,M表示除顶层外每层楼有M个房间。
接下来N*M行,每行两个整数,之间用一个空格隔开,每行描述一个房间内的情况,其中第(i-1)*M+j行表示第i层j-1号房间的情况(i=1,2,…, N;j=1,2,…,M)。
第一个整数表示该房间是否有楼梯通往上一层(0表示没有,1表示有),第二个整数表示指示牌上的数字。
注意,从j号房间的楼梯爬到上一层到达的房间一定也是j号房间。
最后一行,一个整数,表示小明从藏宝楼底层的几号房间进入开始寻宝(注:房间编号从0开始)。
【输出格式】输出只有一行,一个整数,表示打开宝箱的密钥,这个数可能会很大,请输出对20123取模的结果即可。
【输入输出样例】【输入输出样例说明】第一层:0号房间,有楼梯通往上层,指示牌上的数字是2;1号房间,无楼梯通往上层,指示牌上的数字是3;2号房间,有楼梯通往上层,指示牌上的数字是4;第二层:0号房间,无楼梯通往上层,指示牌上的数字是1;1号房间,有楼梯通往上层,指示牌上的数字是5;2号房间,有楼梯通往上层,指示牌上的数字是2;小明首先进入第一层(底层)的1号房间,记下指示牌上的数字为3,然后从这个房间开始,沿逆时针方向选择第3个有楼梯的房间2号房间进入,上楼后到达第二层的2号房间,记下指示牌上的数字为2,由于当前房间本身有楼梯通向上层,该房间作为第一个有楼梯的房间。
因此,此时沿逆时针方向选择第2个有楼梯的房间即为1号房间,进入后上楼梯到达顶层。
这时把上述记下的指示牌上的数字加起来,即3+2=5,所以打开宝箱的密钥就是5。
【数据范围】对于50%数据,有0<N≤1000,0<x≤10000;对于100%数据,有0<N≤10000,0<M≤100,0<x≤1,000,000三国游戏(sanguo.cpp)noip2010普及t4【题目描述】小涵很喜欢电脑游戏,这些天他正在玩一个叫做《三国》的游戏。
在游戏中,小涵和计算机各执一方,组建各自的军队进行对战。
游戏中共有N 位武将(N 为偶数且不小于4),任意两个武将之间有一个“默契值”,表示若此两位武将作为一对组合作战时,该组合的威力有多大。
游戏开始前,所有武将都是自由的(称为自由武将,一旦某个自由武将被选中作为某方军队的一员,那么他就不再是自由武将了),换句话说,所谓的自由武将不属于任何一方。
游戏开始,小涵和计算机要从自由武将中挑选武将组成自己的军队,规则如下:小涵先从自由武将中选出一个加入自己的军队,然后计算机也从自由武将中选出一个加入计算机方的军队。
接下来一直按照“小涵→计算机→小涵→……”的顺序选择武将,直到所有的武将被双方均分完。
然后,程序自动从双方军队中各挑出一对默契值最高的武将组合代表自己的军队进行二对二比武,拥有更高默契值的一对武将组合获胜,表示两军交战,拥有获胜武将组合的一方获胜。
已知计算机一方选择武将的原则是尽量破坏对手下一步将形成的最强组合,它采取的具体策略如下:任何时刻,轮到计算机挑选时,它会尝试将对手军队中的每个武将与当前每个自由武将进行一一配对,找出所有配对中默契值最高的那对武将组合,并将该组合中的自由武将选入自己的军队。
下面举例说明计算机的选将策略,例如,游戏中一共有 6 个武将,他们相互之间的默契值如下表所示双方选将过程如下所示:小涵想知道,如果计算机在一局游戏中始终坚持上面这个策略,那么自己有没有可能必胜?如果有,在所有可能的胜利结局中,自己那对用于比武的武将组合的默契值最大是多少?假设整个游戏过程中,对战双方任何时候均能看到自由武将队中的武将和对方军队的武将。
为了简化问题,保证对于不同的武将组合,其默契值均不相同。
【输入格式】共N 行。
第一行为一个偶数N(N≤500),表示武将的个数。
第2 行到第N 行里,第(i+1)行有(N−i)个非负整数,每两个数之间用一个空格隔开,表示i 号武将和i+1,i+2,……,N 号武将之间的默契值(0 ≤默契值≤1,000,000,000)。
【输出格式】共1 或2 行。
若对于给定的游戏输入,存在可以让小涵获胜的选将顺序,则输出1,并另起一行输出。
所有获胜的情况中,小涵最终选出的武将组合的最大默契值。
如果不存在可以让小涵获胜的选将顺序,则输出0。
【输入输出样例1】【输入输出样例说明1】首先小涵拿走5 号武将;计算机发现5 号武将和剩下武将中的4 号默契值最高,于是拿走4 号;小涵接着拿走3 号;计算机发现3、5 号武将之一和剩下的武将配对的所有组合中,5 号和1 号默契值最高,于是拿走1号;小涵接着拿走2 号;计算机最后拿走6 号。
在小涵手里的2,3,5 号武将中,3 号和5 号配合最好,默契值为32,而计算机能推出的最好组合为1 号和6 号,默契值为27 。
结果为小涵胜,并且这个组合是小涵用尽所有方法能取到的最好组合。
【输入输出样例2】【数据范围】对于40%的数据有N≤10。
对于70%的数据有N≤18。
对于100%的数据有N≤500。
跳石头(stone.cpp)noip2015提高day2 t1【题目描述】一年一度的“跳石头”比赛又要开始了!这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。
组委会已经选择好了两块岩石作为比赛起点和终点。
在起点和终点之间,有N 块岩石(不含起点和终点的岩石)。
在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点。
为了提高比赛难度,组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳跃距离尽可能长。
由于预算限制,组委会至多从起点和终点之间移走M 块岩石(不能移走起点和终点的岩石)。
【输入格式】输入文件第一行包含三个整数L,N,M,分别表示起点到终点的距离,起点和终点之间的岩石数,以及组委会至多移走的岩石数。
保证L≥1 且N≥M≥0。
接下来N行,每行一个整数,第i 行的整数Di(0<Di<L),表示第i 块岩石与起点的距离。
这些岩石按与起点距离从小到大的顺序给出,且不会有两个岩石出现在同一个位置。
【输出格式】输出文件只包含一个整数,即最短跳跃距离的最大值。
【输入输出样例1】【输入输出样例1说明】将与起点距离为2和14的两个岩石移走后,最短的跳跃距离为4(从与起点距离17的岩石跳到距离21的岩石,或者从距离21的岩石跳到终点)。
【数据规模与约定】对于20%的数据,0 ≤ M ≤ N ≤ 10。
对于50%的数据,0 ≤ M ≤ N ≤ 100。
对于100%的数据,0 ≤ M ≤ N ≤ 50,000,1 ≤ L ≤ 1,000,000,000。
寻找道路(road.cpp) noip2014提高day2 t2【问题描述】在有向图G中,每条边的长度均为1,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件:1.路径上的所有点的出边所指向的点都直接或间接与终点连通。
2.在满足条件1的情况下使路径最短。
注意:图G中可能存在重边和自环,题目保证终点没有出边。
请你输出符合条件的路径的长度。
【输入】输入文件名为road.in。
第一行有两个用一个空格隔开的整数n和m,表示图有n个点和m条边。
接下来的m行每行2个整数x、y,之间用一个空格隔开,表示有一条边从点x 指向点y。
最后一行有两个用一个空格隔开的整数s、t,表示起点为s,终点为t。
【输出】输出文件名为road.out。
输出只有一行,包含一个整数,表示满足题目描述的最短路径的长度。
如果这样的路径不存在,输出-1。
【输入输出样例1】【输入输出样例说明】如上图所示,箭头表示有向道路,圆点表示城市。
起点1与终点3不连通,所以满足题目描述的路径不存在,故输出-1。
【输入输出样例2】【输入输出样例说明】如上图所示,满足条件的路径为1->3->4->5。
注意点2不能在答案路径中,因为点2连了一条边到点6,而点6不与终点5连通。
【数据说明】对于30%的数据,0< n ≤10,0< m ≤20;对于60%的数据,0< n ≤100,0< m ≤2000;对于100%的数据,0< n ≤10,000,0< m ≤200,000,0<x,y,s,t≤n,x≠t。