NOIP普及组复赛试题
CCF全国信息学奥林匹克联赛NOIP普及组复赛试题

CCF全国信息学奥林匹克联赛NOIP普及组复赛试题CCF全国信息学奥林匹克联赛(NOIP2018)复赛普及组(请选手务必仔细阅读本页内容)注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。
2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。
3、全国统一评测时采用的机器配置为:Intel(R) Core(TM) i7-****************,内存32GB。
上述时限以此配置为准。
4、只提供Linux格式附加样例文件。
5、特别提醒:评测在当前最新公布的NOI Linux下进行,各语言的编译器版本以其为准。
1. 标题统计(title.cpp/c/pas)【问题描述】凯凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符?注意:标题中可能包含大、小写英文字母、数字字符、空格和换行符。
统计标题字符数时,空格和换行符不计算在内。
【输入格式】输入文件名为title.in。
输入文件只有一行,一个字符串s。
【输出格式】输出文件名为title.out。
输出文件只有一行,包含一个整数,即作文标题的字符数(不含空格和换行符)。
见选手目录下的title/title1.in和title/title1.ans。
【输入输出样例1说明】标题中共有3个字符,这3个字符都是数字字符。
见选手目录下的title/title2.in和title/title2.ans。
【输入输出样例2说明】标题中共有5个字符,包括1个大写英文字母,1个小写英文字母和2个数字字符,还有1个空格。
由于空格不计入结果中,故标题的有效字符数为4个。
【数据规模与约定】规定|s|表示字符串s的长度(即字符串中的字符和空格数)。
对于40%的数据,1≤|s|≤5,保证输入为数字字符及行末换行符。
对于80%的数据,1≤|s|≤5,输入只可能包含大、小写英文字母、数字字符及行末换行符。
对于100%的数据,1≤|s|≤5,输入可能包含大、小写英文字母、数字字符、空格和行末换行符。
NOIP普和组复赛试题c版本

{
if(d[i+l1][j+l2]!=-1)
d[i+l1][j+l2]++;
}//边上八个位置旳格子不是雷则
数值加1
}
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
if(
d[i][j]==-1) cout<<'*';
else cout<<d[i][j];
cout<<endl;
-5-
参照程序
➢ #include <iostream>
➢ using namespace std;
➢ int main()
➢{
➢
long d[102][102];
➢
long n,m;
➢
cin>>n>>m;
➢
long i,j;
➢
char ch;
➢
for(i=0;i<=n;i++)
➢
{
➢
for(j=0;j<=m;j++)
➢
for(int i=1;i<=n;i++)
➢
{
- 16 -
BYE
温馨提醒: 先了解题目在看题解。
试题分析
The END
2017. 07. 28
➢ 请计算前K天里,骑士一共取得了多少金币。 ➢ 对于全部数据,1≤K≤10000。
➢ 【分析】K旳规模比较少,直接用模拟,一天一天发金币。 ➢ N天发N枚金币,N递增1,剩余天数K-N ➢ 估计时间15-25分钟
noip普及组复赛模拟试题8(答案)

Description 给定整数n(32位以内),判断它是否为2的方幂。
是就输出'yes',否则输出'no'。
Input 一个整数n。
Output 一个字符串Sample Input 4Sample Output yesHintn > 0 && ( ( n & ( n - 1 ) ) == 0貌似是数学问题,套用了提示program ex1560;var n:longint;beginreadln(n);if (n>0) and (n and (n-1)=0) then write('yes') else write('no'); end.输入 127 输出 NO 输入 262144 输出 YES 输入 68719476736 输出 YES问题描述:计算机软件版本通常被用来区分某种软件在不同时间的发布。
大部分软件版本号都是用“.”分隔的非负数的序列。
对两个不同的版本A = a1.a2.a3…an和B = b1.b2.b3…bm,如果下面两个条件之一成立,我们认为版本A要比版本B新:1.对某个i,我们有:对所有j < i, ai > bi 和aj = bj;2.n比m大,而且对所有i < m, ai = bi。
(ai和bi都不超过LONGINT)在这个问题里,你要对给定的一组版本号,按照上面的定义从旧到新排序。
输入文件(VERSIONS.IN):输入文件第一行是一个整数N(N<=20),表示要排序的版本数。
接下来的N行每行一个版本号。
每个版本号是长度不超过50的字符串。
输出文件(VERSIONS.OUT):将排好序的结果以每行一个版本号输出。
输入输出样例:VERSIONS.IN43.0.512.42.4.6VERSIONS.OUT12.42.4.63.0.5var n,i:integer;scan:array [1..30] of string;function check(aa,bb:string):boolean;vara,b:longint;i,j:integer;code:integer;beginaa:=aa+'.'; bb:=bb+'.';i:=pos('.',aa); j:=pos('.',bb);while (i>0) and (j>0) do beginval(copy(aa,1,i-1),a,code);val(copy(bb,1,j-1),b,code);if a<b then exit(true);if a>b then exit(false);delete(aa,1,i);delete(bb,1,j);i:=pos('.',aa);j:=pos('.',bb);end;if (i=0) and (j>0) then exit(true) else exit(false); end;procedure qsort(l,r:integer);vari,j:integer;t:string;beginif l>=r then exit;i:=random(r-l)+l;t:=scan[i];scan[i]:=scan[l];i:=l;j:=r;repeatwhile (i<j) and (check(t,scan[j])) do dec(j);if i=j then break; scan[i]:=scan[j];while (i<j) and (check(scan[i],t)) do inc(i);if i=j then break; scan[j]:=scan[i];until i=j;scan[i]:=t;qsort(l,i-1);qsort(i+1,r);end;beginreadln(n);for i:=1 to n do readln(scan[i]); qsort(1,n);for i:=1 to n do writeln(scan[i]); end.输入73.0.5.11.02.22.2.62.2.83.0.5.43.0 输出1.02.22.2.62.2.83.03.0.5.13.0.5.4输入1211.0.21.0.36.23.43.4.222.12.1.43.4.14.24.2.2输出 11.0.21.0.322.12.1.43.43.4.13.4.24.24.2.26.2输入正整数N、M,求N÷M的值。
noip普及组复赛模拟试题22(答案)

军方截获的信息由n(n<=30000)个数字组成,因为是敌国的高端秘密,所以一时不能破获。
最原始的想法就是对这n个数进行小到大排序,每个数都对应一个序号,然后对第i个是什么数感兴趣,现在要求编程完成。
【输入格式】第一行n,接着是n个截获的数字,接着一行是数字k,接着是k行要输出数的序号。
【输出格式】k行序号对应的数字。
【输入样例】Secret.in5121 1 126 123 73243【输出样例】Secret.out7123121program secret;const max=30000;var n,i,x,k:longint;a:array[1..max] of longint;procedure sort(l,r:longint);var i,j,t,mid:longint;begini:=l;j:=r;mid:=a[(l+r)div 2];repeatwhile a[i]<mid do inc(i);while a[j]>mid do dec(j);if j>=i thenbegint:=a[i];a[i]:=a[j];a[j]:=t;inc(i);dec(j)end;until i>j;if l<j then sort(l,j);if i<r then sort(i,r);end;assign(input,'secret.in');assign(output,'secret.out');reset(input);rewrite(output);readln(n);for i:=1 to n do read(a[i]);sort(1,n);readln(k);for i:=1 to k dobeginreadln(x);writeln(a[x]);end;close(input);close(output);end.输入1512 10 36 127 126 123 75 89 101 999 777 654 456 890 134624391014 输出127536127134890输入248 18 12 24 434 10 36 127 126 123 75 89 101 999 777 654 456 890 134 555 221 108 888 65685431920141710 输出2412654656134456108有一只坏的里程表:它总是跳过数字3和数字8。
noip普及组复赛试题及答案

noip普及组复赛试题及答案一、选择题1. 在计算机科学中,以下哪个概念与数据结构最相关?A. 算法B. 操作系统C. 网络协议D. 编译原理答案:A2. 以下哪种排序算法的时间复杂度为O(n^2)?A. 快速排序B. 归并排序C. 堆排序D. 冒泡排序答案:D3. 在C++中,以下哪个关键字用于定义类?A. structB. unionC. enumD. typedef答案:A4. 以下哪个选项不是数据库管理系统(DBMS)的特性?A. 数据持久性B. 数据共享C. 数据加密D. 数据独立性答案:C5. 在计算机网络中,TCP和UDP协议分别属于哪一层?A. 传输层B. 应用层C. 网络层D. 物理层答案:A二、填空题1. 在计算机程序中,______ 用于定义数据的存储方式和组织形式。
答案:数据结构2. 一个算法的时间复杂度为O(1),表示该算法的执行时间与输入数据的规模______。
答案:无关3. 在C++中,______ 是一种特殊的类,它提供了一种方式来定义数据类型。
答案:typedef4. 数据库管理系统(DBMS)通常包含数据定义语言(DDL)、数据操纵语言(DML)和______。
答案:数据控制语言(DCL)5. 在计算机网络中,______ 协议负责在网络层进行数据包的路由选择。
答案:IP三、简答题1. 请简述面向对象编程(OOP)的三个基本特征。
答案:封装、继承、多态2. 描述二分查找算法的基本步骤。
答案:二分查找算法的基本步骤包括:首先确定数组是有序的,然后取中间元素与目标值比较,如果中间元素等于目标值,则查找成功;如果目标值小于中间元素,则在左半部分继续查找;如果目标值大于中间元素,则在右半部分继续查找,直到找到目标值或查找范围为空。
四、编程题1. 编写一个函数,实现对整数数组的排序。
答案:以下是一个简单的冒泡排序算法实现:```cppvoid bubbleSort(int arr[], int n) {for (int i = 0; i < n-1; i++) {for (int j = 0; j < n-i-1; j++) {if (arr[j] > arr[j+1]) {swap(arr[j], arr[j+1]);}}}}```2. 编写一个函数,实现计算一个整数的阶乘。
NOIP复赛普及组模拟题4

普及组
模拟赛
题目概况
题目名称 输入文件名 输出文件名 提交程序名 每个测试点时限
空间限制
晴天小猪历险记 hill.in hill.out hill.* 1秒 128M
卡布列克圆舞曲 kblk.in kblk.out kblk.* 1秒 128M
山峰暸望 mount.in mount.out mount.*
山的宽度定义为在这个山上进行的测量的次数(也就是序列的长度)。请帮 Bessie 找到最宽的山。
这是一个比较典型的地平线的例子:
*******
*
*********
***
**********
*****
***********Leabharlann **********
*
*****************
***********
*** *
** ******************* ************* * * *******
*
*********************************************************************
321111233367777777654333211111234445676543211121211111234323211111121
输入格式 第一行有一个数 n(2<=n<=1000),表示山的高度。 从第二行至第 n+1 行,第 i+1 行有 i 个数,每个数表示晴天小猪在这一段山
路上需要爬的时间。 输出格式
一个数,即晴天小猪所需要的最短时间。 样例输入 5 1 23 456 10 1 7 8 11456 样例输出 10
noip普及组复赛入门测试(答案+测试数据)

一、新龟兔赛跑(文件名xgtsp.pas)新龟兔赛跑比赛即将举行,此次龟兔赛跑比赛的规则与以往有所不同,不再考察兔子和乌龟谁在最短的时间内跑完规定的路程,而是考察谁在规定时间内跑的路程更长,且兔子和乌龟跑步都是匀速的。
由于兔子的坏习惯,它总喜欢把比赛的总时间T小时中的K小时拿来睡觉。
现在给你比赛的总时间T、兔子的睡觉时间K、兔子的速度U、乌龟的速度V,需要你求出该次比赛谁最后获胜。
输入第一行为一个整数X,表示有X组输入数据。
每组数据只有一行,包括4个数T、K、U、V (1 ≤ T≤ 300,0 ≤ K ≤ T,1 ≤ U ≤ 100,1 ≤ V ≤ 100)。
对于每组数据,输出只有一个数,如果兔子获胜则输出-1,如果乌龟获胜则输出1,如果同时到达则输出0。
允许输入一组数后立即输出对应的结果。
样例输入:21 12 16 2 6 3样例输出:1-1varv,u,t,k,n,i:integer;beginreadln(n);for i:=1 to n do beginreadln(t,k,u,v);if v*t>U*(t-k) then writeln(1);if v*t<U*(t-k) then writeln(-1);if v*t=U*(t-k) then writeln(0);end;end.1、输入:26 2 6 28 6 8 2输出:-12、输入:2300 280 60 20120 0 12 13输出:113、输入:3100 20 50 30100 50 45 25100 80 27 17输出:-1114、输入:3150 77 29 23127 11 22 13139 22 13 7输出:1-1-1二、小球路程(文件名:XQLC.PAS )已知小球从100米高度自由下落,落地后反弹起,又落地,又弹起,……。
每次弹起的高度都是上一次高度的一半。
求小球第N次反弹起的高度和球在整个过程所经过的路程(包括下落和反弹),用键盘输入N,输出反弹高度和经过路程,结果保留两位小数。
noip普及组复赛模拟试题9答案

给定两个正整数(二进制形式表示)A和B,问把A变为B需要改变多少位(bit)?也就是说,整数A和B的二进制表示中有多少位是不同的?Input 一行,两个非负整数A和B(32位以内)。
Output 一行,一个整数。
Sample Input 1 0Sample Output 1program ex1558;var a,b,d:longint;t,s,i:integer;beginreadln(a,b);d:=a xor b;s:=0;for i:=1 to 32 dobegint:= d and 1 ;d:=d shr 1;s:=s+t;end;writeln(s);end. 输入 15 4 输出 3输入 3248 125 输出 7 输入 567894321 12134 输出16【试题描述】做操的时间到了,小明和另外几个同学没有吸取上一次的教训,在教室思考讨论老师讲的一道题目(学习用功型),当他们想通这个题时,其他同学已经在操场上排好队了,他们快速来到操场,希望尽快找到以前排队的位置,准备做操,小明他们记得应该排在某学号同学的后面。
你能不能来帮帮小明他们呢?【输入描述】输入(三行):n m(现在队伍的长度待插入的同学人数)n个同学的学号(5位整数)m组数据(每组2个,分别为插入位置的学生学号插入的学生学号)【输出描述】n+m个学号(插入后每个学生的学号)【输入样例】4 234812 34123 23133 4583134123 23483 45831 83123【输出样例】34812 34123 23483 23133 45831 83123program ex1144;var i,j,n,m:integer;a:array[1..300] of longint;b,c:longint;procedure make(x,y:longint);var i,t:integer;beginfor i:=1 to n doif x=a[i] then begin t:=i+1;break; end;for i:=n downto t do a[i+1]:=a[i];a[t]:=y;n:=n+1;end;beginreadln(n,m);for i:=1 to n do read(a[i]);for i:=1 to m dobeginread(b,c);make(b,c) ;end;for i:=1 to n-1 do write(a[i],' ');write(a[n]);end.输入 8 334812 34123 23133 45831 34517 45830 23134 3412034123 23483 45831 83123 34517 43234输出 34812 34123 23483 23133 45831 83123 34517 43234 45830 23134 34120输入 10 434812 34123 23133 45831 34517 45830 23134 34120 23122 3410934123 23483 45831 83123 34517 43234 23122 23167输出 34812 34123 23483 23133 45831 83123 34517 43234 45830 23134 34120 23122 23167 34109问题描述:如果一个数包含了0--9这十个数字,就称为十全数,因此1023456789是最小的十全数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CCF全国信息学奥林匹克联赛(NOIP2017)复赛普及组(请选手务必仔细阅读本页内容)注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。
2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。
3、全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) II x2 240 processor,2.8GHz,内存4G,上述时限以此配置为准。
4、只提供Linux格式附加样例文件。
5、提交的程序代码文件的放置位置请参照各省的具体要求。
6、特别提醒:评测在当前最新公布的NOI Linux下进行,各语言的编译器版本以其为准。
1. 成绩(score.cpp/c/pas)【问题描述】牛牛最近学习了C++入门课程,这门课程的总成绩计算方法是:总成绩=作业成绩×20%+小测成绩×30%+期末考试成绩×50%牛牛想知道,这门课程自己最终能得到多少分。
【输入格式】输入文件名为score.in。
输入文件只有1行,包含三个非负整数A、B、C,分别表示牛牛的作业成绩、小测成绩和期末考试成绩。
相邻两个数之间用一个空格隔开,三项成绩满分都是100分。
【输出格式】输出文件名为score.out。
输出文件只有1行,包含一个整数,即牛牛这门课程的总成绩,满分也是100分。
见选手目录下的score/score1.in和score/score1.ans。
【输入输出样例1说明】牛牛的作业成绩是100分,小测成绩是100分,期末考试成绩是80分,总成绩是100×20%+100×30%+80×50%=20+30+40=90。
【输入输出样例2说明】牛牛的作业成绩是60分,小测成绩是90分,期末考试成绩是80分,总成绩是60×20%+90×30%+80×50%=12+27+40=79。
【数据说明】对于30%的数据,A=B=0。
对于另外30%的数据,A=B=100。
对于100%的数据,0≤A、B、C≤100且A、B、C都是10的整数倍。
2. 图书管理员(librarian.cpp/c/pas)【问题描述】图书馆中每本书都有一个图书编码,可以用于快速检索图书,这个图书编码是一个正整数。
每位借书的读者手中有一个需求码,这个需求码也是一个正整数。
如果一本书的图书编码恰好以读者的需求码结尾,那么这本书就是这位读者所需要的。
小D刚刚当上图书馆的管理员,她知道图书馆里所有书的图书编码,她请你帮她写一个程序,对于每一位读者,求出他所需要的书中图书编码最小的那本书,如果没有他需要的书,请输出-1。
【输入格式】输入文件名为librarian.in。
输入文件的第一行,包含两个正整数n和q,以一个空格分开,分别代表图书馆里书的数量和读者的数量。
接下来的n行,每行包含一个正整数,代表图书馆里某本书的图书编码。
接下来的q行,每行包含两个正整数,以一个空格分开,第一个正整数代表图书馆里读者的需求码的长度,第二个正整数代表读者的需求码。
【输出格式】输出文件名为librarian.out。
输出文件有q行,每行包含一个整数,如果存在第i个读者所需要的书,则在第i 行输出第i个读者所需要的书中图书编码最小的那本书的图书编码,否则输出-1。
见选手目录下的librarian /librarian1.in和librarian/librarian1.ans。
【输入输出样例1说明】第一位读者需要的书有2123、1123、23,其中23是最小的图书编码。
第二位读者需要的书有2123、1123,其中1123是最小的图书编码。
对于第三位,第四位和第五位读者,没有书的图书编码以他们的需求码结尾,即没有他们需要的书,输出-1。
【输入输出样例2】见选手目录下的librarian/librarian2.in和librarian/librarian2.ans。
【数据规模与约定】对于20%的数据,1 ≤n ≤2。
另有20%的数据,q = 1。
另有20%的数据,所有读者的需求码的长度均为1。
另有20%的数据,所有的图书编码按从小到大的顺序给出。
对于100%的数据,1 ≤n ≤1,000,1 ≤q ≤1,000,所有的图书编码和需求码均不超过10,000,000。
3. 棋盘(chess.cpp/c/pas)【问题描述】有一个m×m的棋盘,棋盘上每一个格子可能是红色、黄色或没有任何颜色的。
你现在要从棋盘的最左上角走到棋盘的最右下角。
任何一个时刻,你所站在的位置必须是有颜色的(不能是无色的),你只能向上、下、左、右四个方向前进。
当你从一个格子走向另一个格子时,如果两个格子的颜色相同,那你不需要花费金币;如果不同,则你需要花费1个金币。
另外,你可以花费2个金币施展魔法让下一个无色格子暂时变为你指定的颜色。
但这个魔法不能连续使用,而且这个魔法的持续时间很短,也就是说,如果你使用了这个魔法,走到了这个暂时有颜色的格子上,你就不能继续使用魔法;只有当你离开这个位置,走到一个本来就有颜色的格子上的时候,你才能继续使用这个魔法,而当你离开了这个位置(施展魔法使得变为有颜色的格子)时,这个格子恢复为无色。
现在你要从棋盘的最左上角,走到棋盘的最右下角,求花费的最少金币是多少?【输入格式】输入文件名为chess.in。
数据的第一行包含两个正整数m,n,以一个空格分开,分别代表棋盘的大小,棋盘上有颜色的格子的数量。
接下来的n行,每行三个正整数x,y,c,分别表示坐标为(x,y)的格子有颜色c。
其中c=1代表黄色,c=0代表红色。
相邻两个数之间用一个空格隔开。
棋盘左上角的坐标为(1, 1),右下角的坐标为(m, m)。
棋盘上其余的格子都是无色。
保证棋盘的左上角,也就是(1,1)一定是有颜色的。
【输出格式】输出文件名为chess.out。
输出一行,一个整数,表示花费的金币的最小值,如果无法到达,输出-1。
chess/chess1.in chess/chess1.ans【输入输出样例1说明】从(1,1)开始,走到(1,2)不花费金币 从(1,2)向下走到(2,2)花费1枚金币从(2,2)施展魔法,将(2,3)变为黄色,花费2枚金币 从(2,2)走到(2,3)不花费金币 从(2,3)走到(3,3)不花费金币 从(3,3)走到(3,4)花费1枚金币 从(3,4)走到(4,4)花费1枚金币从(4,4)施展魔法,将(4,5)变为黄色,花费2枚金币, 从(4,4)走到(4,5)不花费金币 从(4,5)走到(5,5)花费1枚金币 共花费8枚金币。
【输入输出样例2】 chess/chess2.in chess/chess2.ans从(1,1)走到(1,2),不花费金币从(1,2)走到(2,2),花费1金币施展魔法将(2,3)变为黄色,并从(2,2)走到(2,3)花费2金币从(2,3)走到(3,3)不花费金币从(3,3)只能施展魔法到达(3,2),(2,3),(3,4),(4,3)而从以上四点均无法到达(5,5),故无法到达终点,输出-1【输入输出样例3】见选手目录下的chess/chess3.in和chess/chess3.ans。
【数据规模与约定】对于30%的数据,1 ≤m ≤5,1 ≤n ≤10。
对于60%的数据,1 ≤m ≤20,1 ≤n ≤200。
对于100%的数据,1 ≤m ≤100,1 ≤n ≤1,000。
4. 跳房子(jump.cpp/c/pas)【问题描述】跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一。
跳房子的游戏规则如下:在地面上确定一个起点,然后在起点右侧画n个格子,这些格子都在同一条直线上。
每个格子内有一个数字(整数),表示到达这个格子能得到的分数。
玩家第一次从起点开始向右跳,跳到起点右侧的一个格子内。
第二次再从当前位置继续向右跳,依此类推。
规则规定:玩家每次都必须跳到当前位置右侧的一个格子内。
玩家可以在任意时刻结束游戏,获得的分数为曾经到达过的格子中的数字之和。
现在小R研发了一款弹跳机器人来参加这个游戏。
但是这个机器人有一个非常严重的缺陷,它每次向右弹跳的距离只能为固定的d。
小R希望改进他的机器人,如果他花g个金币改进他的机器人,那么他的机器人灵活性就能增加g,但是需要注意的是,每次弹跳的距离至少为1。
具体而言,当g<d时,他的机器人每次可以选择向右弹跳的距离为d-g, d-g+1, d-g+2,…,d+g-2,d+g-1,d+g;否则(当g≥d时),他的机器人每次可以选择向右弹跳的距离为1,2,3,…,d+g-2,d+g-1,d+g。
现在小R希望获得至少k分,请问他至少要花多少金币来改造他的机器人。
【输入格式】输入文件名为jump.in。
第一行三个正整数n,d,k,分别表示格子的数目,改进前机器人弹跳的固定距离,以及希望至少获得的分数。
相邻两个数之间用一个空格隔开。
接下来n行,每行两个正整数x i,s i,分别表示起点到第i个格子的距离以及第i个格子的分数。
两个数之间用一个空格隔开。
保证x i按递增顺序输入。
【输出格式】输出文件名为jump.out。
共一行,一个整数,表示至少要花多少金币来改造他的机器人。
若无论如何他都无法获得至少k分,输出-1。
【输入输出样例1说明】花费2个金币改进后,小R的机器人依次选择的向右弹跳的距离分别为2,3,5,3,4,3,先后到达的位置分别为2,5,10,13,17,20,对应1, 2, 3, 5, 6, 7这6个格子。
这些格子中的数字之和15即为小R获得的分数。
见选手目录下的jump/jump2.in和jump/jump2.ans。
【输入输出样例2说明】由于样例中7个格子组合的最大可能数字之和只有18 ,无论如何都无法获得20分。
【输入输出样例3】见选手目录下的jump/jump3.in和jump/jump3.ans。
【数据规模与约定】本题共10组测试数据,每组数据10分。
对于全部的数据满足1≤n≤500000,1≤d≤2000,1≤x i,k≤109,|s i|<105。
对于第1,2组测试数据,n≤10;对于第3,4,5组测试数据,n≤500对于第6,7,8组测试数据,d=1。