NOIP2018年复赛普和组试题
2018NOIP普及组初赛试题答案解析
![2018NOIP普及组初赛试题答案解析](https://img.taocdn.com/s3/m/cdfd4a83d05abe23482fb4daa58da0116c171f89.png)
第二十四届全国青少年信息学奥林匹克联赛初赛普及组C++语言试题竞赛时间:2018年10月13日14:30~16:30选手注意:●试题纸共有7页,答题纸共有2页,满分100分。
请在答题纸上作答,写在试题纸上的一律无效。
●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共15题,每题2分,共计30分;每题有且仅有一个正确选项)1.以下哪一种设备属于输出设备:()A.扫描仪B.键盘C.鼠标D.打印机解析:这是一道送分题,会就会,不会就不会。
所以选D。
2.下列四个不同进制的数中,与其它三项数值上不相等的是()。
A.(269)16B.(617)10C.(1151)8D.(1001101011)2解析:这题考核的是进制转换。
(269)16=2*16^2+6*16^1+9*16^0=617,(1151)8=1*8^3+1* 8^2+5*8^1+1*8^0=617,而(1001101011)2=619。
所以选D。
3.1MB等于()。
A.1000字节B.1024字节C.1000X1000字节D.1024X1024字节1KB=1024B1MB=1024KB解析:这题考核的是字节之间的转换。
1MB=1024KB=1024*1024B。
所以选D。
4.广域网的英文缩写是()。
NB.WANC.MAND.LNA解析:这题是送命题,,会就会,不会就不会。
WAN全称为Wide Area Network。
所以选B。
5.中国计算机学会于()年创办全国青少年计算机程序设计竞赛。
A.1983B.1984C.1985D.1986解析:这题是送命题,会就会,不会就不会。
NOI是全国青少年信息学奥林匹克竞赛(National Olympiad in Informatics)的简称。
NOI是国内包括港澳在内的省级代表队最高水平的大赛,自1984年至今,在国内包括香港、澳门组织竞赛活动。
所以选B。
6.如果开始时计算机处于小写输入状态,现在有一只小老鼠反复按照CapsLock、字母键A、字母键S、字母键D、字母键F的顺序循环按键,即CapsLock、A、S、D、F、CapsLock、A、S、D、F、……,屏幕上输出的第81个字符是字母()。
2018年noip普及组第二题
![2018年noip普及组第二题](https://img.taocdn.com/s3/m/517c669c7e192279168884868762caaedd33bafd.png)
2018年noip普及组第二题1、本文将对2018年noip普及组的第二题进行分析和讨论,探究题目的背景、要求以及解题思路,帮助读者更好地理解和解决这道题目。
2、题目背景2018年noip是全国青少年信息学奥林匹克竞赛,分为普及组和提高组,旨在激发学生对计算机科学和算法设计的兴趣,提高他们的创新能力和复杂问题解决能力。
第二题是普及组的比赛题目之一,要求参赛选手熟练运用基本的算法和数据结构知识,解决一个具体的问题。
3、题目要求2018年noip普及组第二题的要求是:给定一个N* M的地图,每个位置上有一个非负权值,从(1,1)点开始,要求找到一条路径,使得路径上所有点的权值和最大,且路径仅能向右或向下延伸。
要求编写程序,计算出该最大权值和。
4、解题思路解决这道题目需要考察动态规划的思想。
我们可以定义一个二维数组dp,dp[i][j]表示到达位置(i, j)时的最大权值和。
在递推的过程中,可以使用状态转移方程来更新dp数组的数值,即dp[i][j] = max(dp[i-1][j], dp[i][j-1]) + arr[i][j],其中arr[i][j]表示地图上位置(i, j)的权值。
dp[N][M]即为题目所求的最大权值和。
5、结论通过上述分析,我们可以看到2018年noip普及组第二题的解题思路是比较清晰的,借助动态规划算法,可以较为高效地解决这个问题。
这也反映了noip竞赛题目的特点,既考察了基本的算法知识,又需要选手具备一定的分析和推理能力。
希望本文能为读者对该题目有所启发,也希望更多的青少年能参与到这样的计算机科学竞赛中,从中受益并成长。
6、进一步分析在解决2018年noip普及组第二题时,我们不仅需要考虑动态规划的思想,还需要思考如何提高程序的效率。
由于题目要求只能向右或向下延伸路径,并且每个位置上有一个非负权值,因此我们可以利用空间复杂度更低的方法进行优化。
我们可以观察到,对于位置(i, j),计算最大权值和只需要用到它上方(i-1, j)和左方(i, j-1)的位置的最大权值和。
NOIP2018小学组第一试
![NOIP2018小学组第一试](https://img.taocdn.com/s3/m/9cf696f2240c844769eaeeb0.png)
2018年山东省信息学奥林匹克联赛(NOIP2018)复赛小学组试题(一)(2018年11月10日14:30~16:00)(请选手务必仔细阅读本页内容)一.题目概况二.提交源程序文件名注意事项:1.文件名(程序名和输入输出文件名)必须使用英文小写。
2.C/C++中函数 main()的返回值类型必须是 int,程序正常结束时的返回值必须是 0。
三.参考文件输入输出操作以第一题为例:一.小明的照片【问题描述】国庆假期,小明和爸爸妈妈一起外出旅游,沿途拍摄了很多美丽的风景照片,在返程的前一天晚上,他整理了一下所有的照片:手机里有x张,平板电脑里有y张,单反相机里有z张。
小明计划开学后拿出n张照片与同学们分享,请问他至少还需要再拍摄多少张照片?【输入】输入文件名为photo.in。
一行,四个正整数n,x,y,z,中间用空格隔开。
输入的数据保证现有的照片总数不超过n。
【输出】输出文件名为photo.out。
一行,只有一个整数,表示还需要再拍摄的照片数量。
【输入输出样例】二. 快递费用【问题描述】某快递公司按邮寄物品的重量收费,收费标准如下:重量在500克以内的,一律20元;超过500克的,超重的部分按每500克加收费用。
超出的重量不足500克的,按500克计算。
例如:1020克,超重720克,需加收两份费用。
根据目的地的不同,加收的费用是不一样的。
快递公司划分了五个目的地区域:区域1:每超重500克加收4元;区域2:每超重500克加收6元;区域3:每超重500克加收9元;区域4:每超重500克加收10元;区域5:每超重500克加收17元。
给出物品的重量w和目的地区域编号,请你计算快递费用。
【输入】输入文件名为price.in。
一行,两个正整数w, no。
【输出】输出文件名为price.out。
一行,一个整数,表示快递费用。
【输入输出样例】1020克的物品寄到区域3,前500克收费20元;超重1020-500=720克,还需缴纳2份加收的费用;区域3每超重500克加收9元,共计:20+9*2=38元。
信息学竞赛NOIP2018复赛提高组day2题目解答
![信息学竞赛NOIP2018复赛提高组day2题目解答](https://img.taocdn.com/s3/m/3ec8a68fdd3383c4bb4cd2c9.png)
全国信息学奥林匹克联赛(NOIP2018)复赛 M z(INF); for(int i=0;i<=1;i++) for(int j=0;j<=1;j++) for(int k=0;k<=1;k++) z.a[i][k]=min(z.a[i][k],a[i][j]+y.a[j][k]); return z; } }; struct lnk { lnk *last; long long x1,x2; lnk *left,*right; M now; lnk() { left=NULL; right=NULL; last=NULL; } void Trans() { now.a[0][0]=INF; now.a[1][0]=x2; now.a[1][1]=x2; now.a[0][1]=x1; if(right!=0) now=now*(right->now); if(left!=0) now=(left->now)*now; }
全国信息学奥林匹克联赛(NOIP2018)复赛 } } int main() { freopen("travel.in","r",stdin); freopen("travel.out","w",stdout); int n, m; scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { scanf("%d%d",&edge[i].x,&edge[i].y); D[edge[i].x]++; D[edge[i].y]++; } for(int i=1;i<=n;i++) { a[i]=new int[D[i]+1]; a[i][0]=D[i]; } for(int i=1;i<=m;i++) { int x=edge[i].x,y=edge[i].y; a[x][D[x]--]=y; a[y][D[y]--]=x; } for(int i=1;i<=n;i++) sort(a[i]+1,a[i]+a[i][0]+1); if(m==n) { ans[1]=2;
NOIP2018提高组复赛试题day2
![NOIP2018提高组复赛试题day2](https://img.taocdn.com/s3/m/6aa67fab6529647d272852cb.png)
CCF全国信息学奥林匹克联赛(NOIP2018)复赛提高组 day2(请选手务必仔细阅读本页内容)注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。
2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。
3、全国统一评测时采用的机器配置为:Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz,内存32GB。
上述时限以此配置为准。
4、只提供Linux格式附加样例文件。
5、特别提醒:评测在当前最新公布的NOI Linux下进行,各语言的编译器版本以其为准。
1.旅行(travel.cpp/c/pas)【问题描述】小Y是一个爱好旅行的OIer。
她来到X国,打算将各个城市都玩一遍。
小Y了解到,X国的 n 个城市之间有 m 条双向道路。
每条双向道路连接两个城市。
不存在两条连接同一对城市的道路,也不存在一条连接一个城市和它本身的道路。
并且,从任意一个城市出发,通过这些道路都可以到达任意一个其他城市。
小Y只能通过这些道路从一个城市前往另一个城市。
小Y的旅行方案是这样的:任意选定一个城市作为起点,然后从起点开始,每次可以选择一条与当前城市相连的道路,走向一个没有去过的城市,或者沿着第一次访问该城市时经过的道路后退到上一个城市。
当小Y回到起点时,她可以选择结束这次旅行或继续旅行。
需要注意的是,小Y要求在旅行方案中,每个城市都被访问到。
为了让自己的旅行更有意义,小Y决定在每到达一个新的城市(包括起点)时,将它的编号记录下来。
她知道这样会形成一个长度为 n 的序列。
她希望这个序列的字典序最小,你能帮帮她吗?对于两个长度均为 n 的序列A和B,当且仅当存在一个正整数x,满足以下条件时,我们说序列A的字典序小于B。
⚫对于任意正整数1≤i<x,序列A的第i个元素A i和序列B的第i个元素B i相同。
⚫序列A的第x个元素的值小于序列B的第x个元素的值。
NOIP2018第二十四届普及组初赛题目C++和答案
![NOIP2018第二十四届普及组初赛题目C++和答案](https://img.taocdn.com/s3/m/5ef5e5adc281e53a5902ff50.png)
第二十四届全国青少年信息学奥林匹克联赛初赛普及组C++语言试题竞赛时间:2018 年10 月13 日14:30~16:30选手注意:●试题纸共有7 页,答题纸共有2 页,满分100 分。
请在答题纸上作答,写在试题纸上的一律无效。
●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共15 题,每题 2 分,共计30 分;每题有且仅有一个正确选项)1.以下哪一种设备属于输出设备:()A.扫描仪B. 键盘C. 鼠标D. 打印机2.下列四个不同进制的数中,与其它三项数值上不相等的是()。
A.(269)16B.(617)10C.(1151)8D.(1001101011)23.1MB 等于()。
A.1000 字节B. 1024 字节C. 1000 X 1000 字节D. 1024 X 1024 字节4.广域网的英文缩写是()。
NB.WANC.MAND.LNA5.中国计算机学会于()年创办全国青少年计算机程序设计竞赛。
A.1983B.1984C.1985D.19866.如果开始时计算机处于小写输入状态,现在有一只小老鼠反复按照CapsLock、字母键A、字母键S、字母键D、字母键F 的顺序循环按键,即CapsLock、A、S、D、F、CapsLock、A、S、D、F、……,屏幕上输出的第81 个字符是字母()。
A. AB. SC. DD. a7.根节点深度为0,一棵深度为h 的满k(k>1)叉树,即除最后一层无任何子节点外,每一层上的所有结点都有k 个子结点的树,共有()个结点。
A.(k h+1 - 1) / (k - 1)B.k h-1C.k hD.(k h-1) / (k - 1)8.以下排序算法中,不需要进行关键字比较操作的算法是()。
A.基数排序B.冒泡排序C.堆排序D.直接插入排序9.给定一个含N 个不相同数字的数组,在最坏情况下,找出其中最大或最小的数,至少需要N - 1 次比较操作。
2018年noip普及组第二题
![2018年noip普及组第二题](https://img.taocdn.com/s3/m/3c79754ee97101f69e3143323968011ca300f7d7.png)
2018年noip普及组第二题一、题目背景介绍2018年NOIp普及组第二题是一道动态规划题目。
题目描述如下:有一个长度为n的数组,每次可以选择一个数字,将它与数组中第一个数字相加。
求最少需要多少次操作,可以使数组中的所有数字变成非负数。
二、题目分析为了使数组中的所有数字变成非负数,我们可以将负数移到数组的末尾。
每次操作可以将第一个数字与一个负数相加,从而使得第一个数字的非负性更强。
因此,我们需要找到一个策略,使得每次操作都可以使得数组更好。
三、算法思路我们可以使用动态规划来解决这个问题。
定义一个数组dp,其中dp[i]表示将数组前i个数字变成非负数所需的最少操作次数。
状态转移方程为:dp[i] = min(dp[i-1], dp[i-2] + abs(arr[i]))其中,arr[i]表示数组中的第i个数字。
四、算法实现与代码以下是使用Python实现的代码:```pythondef min_operations(nums):if not nums or max(nums) <= 0:return 0n = len(nums)dp = [float("inf")] * ndp[0] = 0dp[1] = abs(nums[1]) if nums[1] < 0 else 0for i in range(2, n):dp[i] = min(dp[i-1], dp[i-2] + abs(nums[i]))return dp[n-1]# 测试ums = [1, -2, 3, -1, 0, 2, 4, -2, 1]print(min_operations(nums)) # 输出:3```五、测试与优化我们可以对给定的数组进行测试,验证算法的正确性。
同时,可以尝试调整数组中的数字,观察算法的表现,以优化算法的性能。
六、总结与拓展本题通过动态规划解决了将数组中的所有数字变成非负数的问题。
noip普和模拟卷2018年(重传)
![noip普和模拟卷2018年(重传)](https://img.taocdn.com/s3/m/228f01d7102de2bd960588f0.png)
18noip普及模拟卷(重传)原创率高一:单项选择1.5%*20=30%1.(11100011)2+(9A)16=()10A:351 B:379 C:380 D:381 2.堆排序根据的数据结构为:A:队列B:二叉树 C:有向图 D:堆栈3.以下文字体现了--算法:计算:214解:原式=(27)2=((23)2*2)2=(((2)2*2)2*2)2=16384A:二分 B:递推 C:广搜 D:递推4.以下语句为定义头文件的是:A:#include<bits/stdc++.h>B:#define fin cinC:using namespace std;D:int a[100],i;5.计算!((0)&&((1%3)||(1*2*3*4*5*6*7*8*9*0))||(3))= A:0 B:1 C:2 D:-16.计算机的第三代为:A:大规模集成电路 B:晶体管 C:电子管 D:集成电路7.以下程序段出现编译错误,请指出编译错误的行:int i,j=0;……Acin>>j;……Bfor (i=1;i<=sqrt(j);i++)……Ccout<<i<<‘’;……D8.4EB=A:1024KB B:1024*4MB C:4*10242TB D:4*10003GB9.对于一个空栈,所有入栈操作均以字母表顺序进行。
操作为:进进出进出出进进进进出。
试问下一个出栈字母为:A:D B:F C:H D:I f noip系列比赛有三个数值:初赛成绩,复赛成绩和总分。
将初赛、复赛成绩转化为总分时有一个比例,这个比例是:A:1:1 B:0:1 C:3:7 D:4:611.计算机应用的最早领域是()A. 数值计算B. 人工智能C. 机器人D. 过程控制12.表达式a*(b+c)*d的后缀形式是()A. abcd*+*B. abc+*d*C. a*bc+*dD. b+c*a* d13. 冒泡排序的最坏时间复杂度为:A:O(nlogn) B:O(n) C:O(n2) D:O(logn)14.若串S=“copyright”,其子串的个数是()A. 72B. 45C. 46D. 3615.换行符的ASCII码为:A:1 B:9 C:10 D:3216.c++中等效于repeat……until ……的是:A:for(i=1;i<=……;i++) B:switch ( ) {case ^ :……;……} C:while (……)……D:do{…………} while ……17.以下语言面向过程的是:A:pascal B:汇编语言 C:机器语言 D:c++ 18.以下定义文件正确的是:A:freopen(”1.in”,’r’,cstin);B:freopen(’1.in’,’r’,stdin);C:freopen(“1.in”,”r”,cstin);D:freopen(“1.in”,”r”,stdin);19.以下语句不能计算a+b的是:A:c=a+b B:c+=a+b;C:for (i=1;i<a+b;i++)c++;D:if(a>b)c=a+b;else c=b+a;20.以下c++版本不支持万能头文件的是:A:Dev c++5.6.1 B:dev c++ 5.9.2 C:dev c++ 6.1.0 D:dev c++ 4.9.9.2二:问题求解 5%*2=10%1.0,1,1,2,3,5,8所属的数列的第18项与第19项之和为----------41812.等差数列10 13 16 19 22 25 28 ……310之和为16160 三:读程序写结果 8%*4=32%1.#include<bits/stdc++.h>using namespace std;int main(){int a=1,b=2;int c=a*b;int d=a*c+b*b;a=a+d+c*2;b=a*(a+b);double e;e=(double)b+2;if (b%3==0)printf("%0.2f",e);else cout<<a;}输出112.#include<bits/stdc++.h>using namespace std;int a,i,n1,n2,n3,x;int zs(int x){for (i=2;i<=sqrt(x);i++)if (x%i==0) return 1;return 0;}int main(){cin>>a;for (n1=2;n1<=a-4;n1++)for (n2=2;n2<=a-4;n2++){n3=a-n1-n2;if (zs(n1)+zs(n2)+zs(n3)!=0) continue;cout<<n1<<' '<<n2<<' '<<n3; return 0;}}输入2009 输出3 3 20033.#include<iostream>#include<cstdio>#include<string>#include<cctype>using namespace std;long long num,a[1001],p,m,n,len,i,ans[2001]; string s;int main(){cin>>n>>s>>m;len=s.length();for (i=1; i<=len; i++)if (isalpha(s[i-1])) a[i]=s[i-1]-55;else if (isdigit(s[i-1])) a[i]=s[i-1]-48; for (i=len,p=1; i>=1; i--,p*=n)num+=a[i]*p;for (len=1;num>0;num/=m,len++)ans[len]=num%m;for (i=len-1;i>=1;i--)if (ans[i]>=10) printf("%c",ans[i]+55);else printf("%c",ans[i]+48);return 0;}输入:16FF2输出111111114. #include<iostream> using namespacestd;int main() {string ch;int a[200];int b[200];int n, i, t, res;cin >> ch;n = ch.length();for (i = 0; i < 200; i++) b[i] = 0;for (i = 1; i <= n; i++) { a[i] = ch[i - 1] - '0';b[i] = b[i - 1] + a[i];}res = b[n];t = 0;for (i = n; i > 0; i--) {if (a[i] == 0)t++;if (b[i - 1] + t < res)res = b[i - 1] + t;}cout << res << endl;return 0;}输入 1001101011001101101011110001输出11四:完善程序共28%1.圆周率我们知道,当下较为认可的圆周率π计算公式为π/4=1-1/3+1/5-1/7+1/9-……现根据此公式编辑c++程序,要求计算的圆周率准确度随输入n 增加而增大。
2018 年山东省信息学奥林匹克联赛(NOIP2018)复赛小学组试题(二)
![2018 年山东省信息学奥林匹克联赛(NOIP2018)复赛小学组试题(二)](https://img.taocdn.com/s3/m/cd06dacd0975f46527d3e1b0.png)
2018年山东省信息学奥林匹克联赛(NOIP2018)复赛小学组试题(二)(2018年11月10日16:30~18:00)(请选手务必仔细阅读本页内容)一.题目概况二.提交源程序文件名注意事项:1.文件名(程序名和输入输出文件名)必须使用英文小写。
2.C/C++中函数 main()的返回值类型必须是 int,程序正常结束时的返回值必须是 0。
三.参考文件输入输出操作以第一题为例:一.统计成绩【问题描述】考试结束之后,每位同学都依据成绩获得相应的等级:优秀:90~100;良好:80~89;及格:60~79;不及格:60以下。
现在,需要统计一下获得每个等级的人数分别是多少。
【输入】输入文件名为count.in。
第一行,一个正整数n,表示总人数。
第二行,n个由空格隔开的整数,表示每个同学的成绩(0~100)。
【输出】输出文件名为count.out。
共四行,每行一个整数,依次表示获得优秀、良好、及格、不及格等级的人数。
【输入输出样例】二. 11的倍数【问题描述】如判断一个正整数x是不是3的倍数?可以计算x÷3所得的余数,如果余数等于0,那么x是3的倍数。
还可以用下面的方法来判断:把x的个位数字、十位数字、百位数字、……相加,如果所得的和是3的倍数,那么x就是3的倍数。
例如:x = 8511, 8+5+1+1=15,15是3的倍数,那么8511就是3的倍数。
接下来你的任务是,判断x是不是11的倍数。
有一个与判断是不是3的倍数类似的方法供你参考:把x的个位、百位、万位、……上的数字求和,得s1;把x的十位、千位、十万位、……上的数字求和,得s2;如果s1÷11所得的余数 = s2÷11所得的余数,那么x就是11的倍数。
例如:x=3162819s1 = 3+6+8+9 = 26s2 = 1+2+1 = 4因为26÷11余4,4÷11也余4,所以3162819是11的倍数。
NOIP2018提高组复赛试题
![NOIP2018提高组复赛试题](https://img.taocdn.com/s3/m/100204d9aff8941ea76e58fafab069dc50224774.png)
为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
2018年noip普及组第二题
![2018年noip普及组第二题](https://img.taocdn.com/s3/m/dadc06589a6648d7c1c708a1284ac850ad020419.png)
2018年noip普及组第二题(原创版)目录1.题目概述2.题目分析3.解题思路4.代码实现5.总结正文一、题目概述2018 年 noip 普及组第二题,题目名称为“数值计算”,主要考察对于数值计算的基本理解和编程实现能力。
题目要求实现一个简单的计算器功能,包括加法、减法、乘法和除法四种运算。
二、题目分析题目给出了 1000 个测试用例,每个测试用例包含四个整数,分别表示两个加数、被减数和减数、两个因数以及除数和被除数。
要求对于每组输入,输出相应的运算结果。
需要注意的是,题目要求处理一些边界情况,例如除数为 0 等。
三、解题思路针对这道题目,我们可以采用以下步骤进行解题:1.首先读取输入文件,将 1000 个测试用例的输入数据存储到程序中。
2.对每个测试用例,分别进行加法、减法、乘法和除法运算。
3.处理边界情况,例如除数为 0 等。
4.输出每个测试用例的运算结果。
四、代码实现以下是一个简单的 Python 实现:```pythondef read_input():with open("input.txt", "r") as f:return [list(map(int, input().split())) for _ in range(1000)]def calculate(nums):result = [0] * 4result[0] = nums[0] + nums[1]result[1] = nums[0] - nums[2]result[2] = nums[0] * nums[1]if nums[3] == 0:result[3] = "Error"else:result[3] = nums[0] / nums[3]return resultdef main():inputs = read_input()results = [calculate(nums) for nums in inputs]for result in results:print(" ".join(map(str, result)))if __name__ == "__main__":main()```五、总结这道题目较为简单,主要考察对于数值计算的基本理解和编程实现能力。
NOIP2018年复赛普和组精彩试题
![NOIP2018年复赛普和组精彩试题](https://img.taocdn.com/s3/m/a45cfdbe03d8ce2f01662394.png)
实用文档CCF全国信息学奥林匹克联赛(NOIP2017)复赛普及组(请选手务必仔细阅读本页内容)注意事项:文、1 件名(程序名和输入输出文件名)必须使用英文小写。
实用文档。
int ,程序正常结束时的返回值必须是 0 C/C++中函数 main()的返回值类型必须是2、3、 全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) II x2 240 processor , ,上述时限以此配置为准。
2.8GHz ,内存 4G 格式附加样例文件。
提供 Linux 4、 只 交的程序代码文件的放置位置请参照各省的具体要求。
提5、 下进行,各语言的编译器版本以其为准。
NOI Linux 、 特别提醒:评测在当前最新公布的61. 成绩(score.cpp/c/pas)【问题描述】牛牛最近学习了 C++入门课程,这门课程的总成绩计算方法是: 总成绩=作业成绩×20%+小测成绩×30%+期末考试成绩×50% 牛牛想知道,这门课程自己最终能得到多少分。
【输入格式】输入文件名为 score.in。
输入文件只有 1 行,包含三个非负整数A 、B 、C ,分别表示牛牛的作业成绩、小测成绩和期末考试成绩。
相邻两个数之间用一个空格隔开,三项成绩满分都是 100 分。
【输出格式】输出文件名为 score.out 。
输出文件只有 1 行,包含一个整数,即牛牛这门课程的总成绩,满分也是 100 分。
【输入输出样例 1】见选手目录下的 score/score1.in 和 score/score1.ans 。
【输入输出样例 1 说明】牛牛的作业成绩是 100 分,小测成绩是 100 分,期末考试成绩是 80 分,总成 绩是 100×20%+100×30%+80×50%=20+30+40=90。
【输入输出样例 2】见选手目录下的score/score2.in 和score/score2.ans。
NOI2018试题回顾,这种难度的题做好才能签约清华北大!
![NOI2018试题回顾,这种难度的题做好才能签约清华北大!](https://img.taocdn.com/s3/m/fa6b9224b80d6c85ec3a87c24028915f804d84c1.png)
NOI2018试题回顾,这种难度的题做好才能签约清华北⼤!摘要
NOI是每年信息学竞赛的盛会,国际集训队的选⼿都会保送进⼊清华北⼤。
据不完全统计,去
年现场签约的⾼校就有:
清华⼤学
北京⼤学
浙江⼤学
哈尔滨⼯业⼤学
北京邮电⼤学
吉林⼤学
中国⼈民⼤学
电⼦科技⼤学
北京航空航天⼤学
复旦⼤学
上海交通⼤学
南京⼤学
西北⼯业⼤学
天津⼤学
北京理⼯⼤学
等⾼校,今年发布了NOI⾼校现场招⽣规则后,预计会有更多⾼校⼊驻,毕竞这是选拔⼈才最
直接的⽅式!
今天我们就带⼤家来回顾⼀下NOI2018试题,毕竟做好这种难度的题才有机会获得⾼校的关注
呀!
day1 试题:
题⽬改动:
for i for j if(p[j]>p[j+1]) swap(p[j],...)
数据范围的p改成q
信息学竞赛如何规划
现在是不是有很多家长总觉得准备信息学竞赛很迷?不知道应该怎么准备信息学竞赛?是不是听说搞信息学竞赛进清华、北⼤的⽐例是直接⾼考的⼏⼗倍?⼗分想早点获得进⼊清华北⼤的⼊场券?
先让我们⼀起来看看下⾯这个中⼩学信息学路径图,或许您就会有些许清楚及规划!
如果您孩⼦四年级及以上,对计算机编程感兴趣,欢迎参加融科教育信息学课程的学习,欢迎⾄融科教育试听报名!
湖南长沙信息学竞赛。
NOIP 提高组复赛试题day
![NOIP 提高组复赛试题day](https://img.taocdn.com/s3/m/87a7d6726c85ec3a86c2c513.png)
CCF全国信息学奥林匹克联赛(NOIP2018)复赛提高组 day2(请选手务必仔细阅读本页内容)注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。
2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。
3、全国统一评测时采用的机器配置为:Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz,内存32GB。
上述时限以此配置为准。
4、只提供Linux格式附加样例文件。
5、特别提醒:评测在当前最新公布的NOI Linux下进行,各语言的编译器版本以其为准。
1.旅行(travel.cpp/c/pas)【问题描述】小Y是一个爱好旅行的OIer。
她来到X国,打算将各个城市都玩一遍。
小Y了解到,X国的 n 个城市之间有 m 条双向道路。
每条双向道路连接两个城市。
不存在两条连接同一对城市的道路,也不存在一条连接一个城市和它本身的道路。
并且,从任意一个城市出发,通过这些道路都可以到达任意一个其他城市。
小Y只能通过这些道路从一个城市前往另一个城市。
小Y的旅行方案是这样的:任意选定一个城市作为起点,然后从起点开始,每次可以选择一条与当前城市相连的道路,走向一个没有去过的城市,或者沿着第一次访问该城市时经过的道路后退到上一个城市。
当小Y回到起点时,她可以选择结束这次旅行或继续旅行。
需要注意的是,小Y要求在旅行方案中,每个城市都被访问到。
为了让自己的旅行更有意义,小Y决定在每到达一个新的城市(包括起点)时,将它的编号记录下来。
她知道这样会形成一个长度为 n 的序列。
她希望这个序列的字典序最小,你能帮帮她吗?对于两个长度均为 n 的序列A和B,当且仅当存在一个正整数x,满足以下条件时,我们说序列A的字典序小于B。
⚫对于任意正整数1≤i<x,序列A的第i个元素A i和序列B的第i个元素B i相同。
⚫序列A的第x个元素的值小于序列B的第x个元素的值。
NOIP2018复赛提高组Day1试题
![NOIP2018复赛提高组Day1试题](https://img.taocdn.com/s3/m/ee2523c69b89680203d825d8.png)
CCF全国信息学奥林匹克联赛(NOIP2018)复赛提高组 day1(请选手务必仔细阅读本页内容)注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。
2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。
3、全国统一评测时采用的机器配置为:Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz,内存32GB。
上述时限以此配置为准。
4、只提供Linux格式附加样例文件。
5、特别提醒:评测在当前最新公布的NOI Linux下进行,各语言的编译器版本以其为准。
1.铺设道路(road.cpp/c/pas)【问题描述】春春是一名道路工程师,负责铺设一条长度为n的道路。
铺设道路的主要工作是填平下陷的地表。
整段道路可以看作是n块首尾相连的区域,一开始,第i块区域下陷的深度为d i。
春春每天可以选择一段连续区间[L,R],填充这段区间中的每块区域,让其下陷深度减少1。
在选择区间时,需要保证,区间内的每块区域在填充前下陷深度均不为0。
春春希望你能帮他设计一种方案,可以在最短的时间内将整段道路的下陷深度都变为0。
【输入格式】输入文件名为road.in。
输入文件包含两行,第一行包含一个整数n,表示道路的长度。
第二行包含n个整数,相邻两数间用一个空格隔开,第i个整数为d i。
【输出格式】输出文件名为road.out。
输出文件仅包含一个整数,即最少需要多少天才能完成任务。
road/road1.in road/road1.ans【样例解释】一种可行的最佳方案是,依次选择:[1,6]、[1,6]、[1,2]、[1,1]、[4,6]、[4,4]、[4,4]、[6,6]、[6,6]。
【输入输出样例2】见选手目录下的road/road2.in和road/road2.ans。
【数据规模与约定】对于 30% 的数据,1≤n≤10 ;对于 70% 的数据,1≤n≤1000 ;对于 100% 的数据,1≤n≤100000 ,0≤d i≤10000。
CCF全国信息学奥林匹克联赛 NOIP 普及组复赛试题
![CCF全国信息学奥林匹克联赛 NOIP 普及组复赛试题](https://img.taocdn.com/s3/m/b6f3ac08cf84b9d529ea7a2b.png)
CCF全国信息学奥林匹克联赛(NOIP2018)复赛普及组(请选手务必仔细阅读本页内容)注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。
2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。
3、全国统一评测时采用的机器配置为:Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz,内存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普及组复赛试题
![历年noip普及组复赛试题](https://img.taocdn.com/s3/m/ddee68b9710abb68a98271fe910ef12d2bf9a963.png)
历年noip普及组复赛试题
NOIP(全国青少年信息学奥林匹克竞赛)是中国的一项信息学竞赛活动,包括普及组和提高组两个组别。
普及组主要面向初中生和高中生,复赛试题是选拔普及组的参赛选手的关键环节。
以下是历年NOIP普及组复赛试题的一些例子:
1. 2019年NOIP普及组复赛试题:
题目1,给定一个长度为N的字符串S,求出它的最长回文子串的长度。
题目2,给定一个N×M的迷宫,起点为(1, 1),终点为(N, M),求从起点到终点的最短路径长度。
2. 2018年NOIP普及组复赛试题:
题目1,给定一个长度为N的整数序列A,求出其中的最长上升子序列的长度。
题目2,给定一个N×N的矩阵,求出从左上角到右下角的
最短路径长度,每次只能向右或向下移动。
3. 2017年NOIP普及组复赛试题:
题目1,给定一个长度为N的整数序列A,求出其中的最长
连续递增子序列的长度。
题目2,给定一个N×M的棋盘,每个格子上有一个非负整数,求从左上角到右下角的路径,使得路径上的数字之和最小。
4. 2016年NOIP普及组复赛试题:
题目1,给定一个长度为N的整数序列A,求出其中的最长
连续递减子序列的长度。
题目2,给定一个N×M的迷宫,起点为(1, 1),终点为(N, M),求从起点到终点的路径数。
以上只是一些例子,每年的试题都会涉及不同的知识点和算法,题目难度也会有所不同。
参赛选手需要具备扎实的编程基础和算法
思维,才能在复赛中取得好成绩。
希望以上内容能对你有所帮助。
noip2018普及组初赛试题+答案
![noip2018普及组初赛试题+答案](https://img.taocdn.com/s3/m/b66a89b102768e9950e7382c.png)
第24届全国青少年信息学奥林匹克联赛初赛普及组C++语言试题竞赛时间:2 0 18 年10月13日14: 30-1 6:30选手注意:1、试题纸共有7页,答题纸共有2页,满分100分。
请在答题纸上作答,写在试题纸上得一律无效。
2、不得使用任何电子设备(如计算器、手机、电子词典等)或査阅任何书籍资料。
一、单项选择题(共1 5题,每题2分,共计3 0分;每题有且仅有一个正确选项)1、以下哪一种设备属于输出设备:()A、扫描仪B、键盘C、鼠标D、打印机2、下列四个不同进制得数中,与其它三项数值上不相等得就是()。
A、(269)16 (注解:2 * l 6 入2 + 6 * 16^ 1 +9 * 1 6八0 = 617)B、(617)10C、(1 15 1)8 (注解:1 * 8入3 + 1 ± 8 ^2 +5 ^8^1+1 * 8^0 = 617)D、(1001101011) 23、1 MB 等于()。
A、100 0字节B、 1 024字节C、 1 000 X 1000 字节D、1024 X 1024 字节4、广域网得英文缩写就是()。
A、LANB、WAN (Wide Area Network)C、MAND、LNA5、中国计算机学会于()年创办全国青少年计算机程序设计竞赛。
A、 1 983B、19 8 4C、198 5D、19 8 66、如果开始时计算机处于小写输入状态,现在有一只小老鼠反复按照CapsLock、字母键A、字母键S、字母键D、字母键F 得顺序循环按键,即Ca psLock. A、S、I)、F、CapsLock. A、S、D、F ................. ,屏幕上输岀得第8 1个字符就是字母()。
A、AB、SC、 DD、a7、根节点深度为0,—棵深度为h得满k( k > 1 )叉树,即除最后一层无任何子节点外, 每一层上得所有结点都有k个子结点得树,共有()个结点。
- 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 分。
【输入输出样例 1】【输入输出样例 1 说明】牛牛的作业成绩是 100 分,小测成绩是 100 分,期末考试成绩是 80 分,总成绩是100×20%+100×30%+80×50%=20+30+40=90。
【输入输出样例 2】【输入输出样例 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。
【输入输出样例 1】【输入输出样例 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。
【输入输出样例 1】【输入输出样例 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】【输入输出样例 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 x, x x,分别表示起点到第i个格子的距离以及第i 个格子的分数。
两个数之间用一个空格隔开。
保证x x按递增顺序输入。
【输出格式】输出文件名为jump.out。
共一行,一个整数,表示至少要花多少金币来改造他的机器人。
若无论如何他都无法获得至少 k 分,输出-1。
【输入输出样例 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 获得的分数。
【输入输出样例 2】【输入输出样例 2 说明】由于样例中 7 个格子组合的最大可能数字之和只有 18 ,无论如何都无法获得 20 分。
【输入输出样例 3】见选手目录下的jump/jump3.in和jump/jump3.ans。
【数据规模与约定】本题共 10 组测试数据,每组数据 10 分。
对于全部的数据满足1 ≤ n ≤ 500000, 1 ≤d ≤2000, 1 ≤ x x, x≤ 109, |s i| < 105。
对于第 1,2 组测试数据,n ≤ 10;对于第 3,4,5 组测试数据,n ≤ 500对于第 6,7,8 组测试数据,x = 1。