2018年第二十四届全国青少年信息学奥林匹克联赛初赛提高组含问题详解(WORD重新整理排版)
noip2018普及组初赛试题+答案

第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个子结点得树,共有()个结点。
noip2018普及组初赛试题+答案

9.给定一个含N个不相同数字的数组,在最坏情况下,找出其中最大或最小的数,至少 需要N - 1次比较操作。则最坏情况下,在该数组中同时找最大与最小的数至少需要( )次比较操作。( ??表示向上取整,??表示向下取整)
A.?3N / 2 ? - 2
B.?3N / 2 ? - 2
C.2N - 2
A.1983
B.1984
C.1985
D.1986
6.如果开始时计算机处于小写输入状态,现在有一只小老鼠反复按照CapsLock、字母键
A、字母键S、字母键D、字母键F的顺序循环按键, 即CapsLock、A、S、D、F、CapsLock、
A、S、D、F、,屏幕上输出的第81个字符是字母( )。
A.A
A.
哈希表
B.
栈
C.
队列
D.
二叉树
二、
、问题求解(共2题,每题5分,共计
10分)
1.
甲乙丙丁四人在考虑周末要不要外出郊游。
已知1如果周末下雨,并且乙不去,则甲
一定不去;2如果乙去,则丁一定去;3如果丙去,则丁一定不去;4如果丁不去,而且甲 不去,则丙一定不去。 如果周末丙去了, 则甲去了(去了/没去)(1分),乙没去(去了/没去)(1分),丁没去(去了/没去)(1分),周末没下雨(下雨/没下雨)(2分)。
if (n == 0) return m;
if (m == 0) return n%3;
return findans(n - 1, m) - findans(n, m - 1) +findans(n - 1, m - 1);}
int main(){
cin>>n>>m;
[NOIP]-CCFNOIP2018普及组初赛试题+答案
![[NOIP]-CCFNOIP2018普及组初赛试题+答案](https://img.taocdn.com/s3/m/221de3b6f424ccbff121dd36a32d7375a417c647.png)
[NOIP]-CCFNOIP2018普及组初赛试题+答案第24届全国青少年信息学奥林匹克联赛初赛普及组C++语⾔试题竞赛时间:2018 年 10 ⽉ 13 ⽇ 14:30~16:30选⼿注意:1、试题纸共有 7 页,答题纸共有 2 页,满分 100 分。
请在答题纸上作答,写在试题纸上的⼀律⽆效。
2、不得使⽤任何电⼦设备(如计算器、⼿机、电⼦词典等)或查阅任何书籍资料。
⼀、单项选择题(共15题,每题2分,共计30分;每题有且仅有⼀个正确选项)1. 以下哪⼀种设备属于输出设备:( )A.扫描仪B.键盘C.⿏标2. 下列四个不同进制的数中,与其它三项数值上不相等的是( )。
A. (269)16 (注解:2 * 16^2 + 6 * 16^1 + 9 * 16 ^0 = 617)B. (617)10C. (1151)8 (注解:1 * 8^3 + 1 * 8^2 + 5 * 8^1 + 1 * 8^0 = 617)23. 1MB等于( )。
A. 1000 字节B. 1024 字节C. 1000 X 1000字节4. ⼴域⽹的英⽂缩写是( )。
A. LAN(Wide Area Network)C. MAND.LNA5. 中国计算机学会于( )年创办全国青少年计算机程序设计竞赛。
A. 1983C. 1985D. 19866. 如果开始时计算机处于⼩写输⼊状态,现在有⼀只⼩⽼⿏反复按照 CapsLock、字母键 A、字母键S、字母键 D、字母键 F 的顺序循环按键,即CapsLock、A、S、D、F、CapsLock、A、S、D、F、......,屏幕上输出的第 81 个字符是字母 ( )。
B. SC. DD. a7. 根节点深度为 0,⼀棵深度为 h 的满 k(k>1)叉树,即除最后⼀层⽆任何⼦节点外,每⼀层上的所有结点都有k个⼦结点的树,共有( )个结点。
C. k hD. (k h-1) / (k - 1)8. 以下排序算法中,不需要进⾏关键字⽐较操作的算法是( )。
全国青少年信息学奥林匹克联赛培训习题与解答(附程序解析主要是动态规划).pdf

例13-4迷宫寻宝【问题描述】一个n行m列的迷宫(1<=n,m<=5),入口在左上角,规定只能向下或向右走。
迷宫的某些地方藏有不同价值(>0)的宝藏,同时又存在一些障碍无法通过。
求到达右下角出口时收集宝藏的最大值。
【输入】第一行n和m一下n行m列描述迷宫矩阵a[I,j](-1:障碍);最大值【样例输入】342-150513-16-18910【样例输出】33【分析】A[I,j]保存第i行第j列的宝藏价值。
令f[I,j]为从(1,1)走到第i行第j列时所能收集的宝藏的最大价值。
状态转移方程:F[I,j]=max{f[I-1,j],f[I,j-1]}+a[I,j](i<=n,1<=m)条件:n[I,j]<>-1初始:f[1,1]=a[1,1]目标:f[n,m]【参考程序】Const maxn=50;maxm=50;Fin=’b1.in’;Fout=’b1.out’;VarF,a:array[0..maxn+1,0..maxm+1]of integer;I,j,k,n,m,t:integer;Procedure init;BeginAssign(input,fin);Reset(input);Readln(n,m);For i:=0to n+1doFor j:=0to m+1do a[I,j]:=-1;A[0,1]:=0;For i:=1to n doFor j:=1to m doBeginRead(a[I,j]);If(a[I,j-1]=-1)and(a[i-1,j]=-1)then a[I,j]:=-1;//很关键的预处理End;Close(input);End;Function max(a,b:integer):integer;Begin max:=a;if b>a then max:=b;end;Procedure work;BeginFillchar(f,sizeof(f),0);For i:=1to n doFor j:=1to m doIf a[I,j]<>-1Then f[I,j]:=max(f[i-1,j],f[I,j-1])+a[I,j];End;Procedure print;BeginAssign(output,fout);Rewrite(output);Writeln(f[n,m]);Close(output);End;BeginInit;Work;Print;End.13-5花店橱窗布置(IOI1999)【问题描述】假设你想以最美观的方式布置花店的橱窗。
NOIP2018提高组参考答案

第二十四届全国青少年信息学奥林匹克联赛初赛
提高组参考答案
一、单项选择题(共10题,每题2分,共计20分)
1 2 3 4 5 6 7 8 9 10
D D B A D B B A D B
二、不定项选择题(共5题,每题2分,共计10分;每题有一个或多个正确选项,没有部分分)
1 2 3 4 5
AB CD ABD ABD BCD
三、问题求解(共2题,每题5分,共计10分)
1.去了没去没去没下雨(第4空2分,其余1分)
2.454
四、阅读程序写结果(共4题,每题8分,共计32分)
1. 4
2. 6
3.16
4.输出1:2 1 3 5 6 4(3分)输出2:3 2 5 6 1 4(5分)
五、完善程序(共计28分,以下各程序填空可能还有一些等价的写法,由各省赛区组织本省专家审定及上机验证,可以不上报CCF NOI科学委员会复核)
Pascal语言C++语言C语言分值
1 . (1) a[x] := i a[x] = i 3
(2) i + 1 2
(3) R[a[i]] 3
(4) a[i] 3
(5) R[i] 3 2
2 . (1) a[i] * 0.95 <= b[i] 或b[i] >= a[i] * 0.95 2
(2)
total_a >= threshold 或threshold <= total_a 或total_a >= 50000 或50000 <=
total_a
3
(3) total_a + j + a[i] 3
(4) f[j] + total_b - total_b_prefix 3
(5) f[j - a[i]] 3。
信息学竞赛NOIP2018复赛提高组day2题目解答

全国信息学奥林匹克联赛(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;
全国青少年信息学奥林匹克竞赛联赛-广东计算机学会

2018年第二十四届全国青少年信息学奥林匹克联赛(NOIP 2018)广东赛区成绩公告2018年第二十四届全国青少年信息学奥林匹克联赛(NOIP 2018)广东赛区初赛实际参加人数为5201人(其中提高组1984人,普及组3217人),参赛学校337所。
复赛实际参赛人数为1469人(提高组647人,普及组822人), 有资格参加复赛的学校有139所。
本届参赛选手程序全部由全国统一测评,其中提高组一等奖按分配名额划线,结果提高组317名同学(含初二21人,初三52人)获联赛一等奖。
今届广东省获提高组联赛一等奖分数线高出全国基准分数线65分,分数线在全国排第五,获奖人数在全国排第二,表明广东省信息学竞赛不仅普及面而且尖子层人数也在全国前列。
35年的实践表明,GDOI(广东省青少年信息学(计算机)奥林匹克竞赛活动)是培养我们国家、我省计算机优秀后备人才的成功之路。
今年提高组一、二、三等奖及普及组一、二、三等奖均由全国划定基准分数线及获奖比例,最后确认:提高组一、二、三等奖分数线分别为310、160、120,普及组一、二、三等奖分数线分别为215、100、70。
今年全国提高组一等奖分数线按初、复参赛人数及平均分计算,各省分数线差别很大,广东一等奖奖项大幅度地高于全国的基准分数线,同时,广东提高组平均分在296分以上,高于全国21个省的一等奖分数线。
按照广东省信息学竞赛评委会制定的评估方法,综合测评省内各校在开展计算机教学和科技活动中取得的成绩,从全省参加复赛的学校中评出成绩优异的前60所学校,其中校团体一等奖10所,二等奖20所,三等奖30所。
在个人奖方面,NOIP2018广东赛区复赛分数线按照中国计算机学会规定划定一、二、三等奖,边界同分同奖的规则。
获奖统计情况如下表所列:参赛人数省一等省二等省三等获奖总数提高647317人(占49%)234人(占36.17%)32人(占4.95%)583人(占90.11%)普及822214人(占26.03%)544人(占66.18%)10人(占1.22%)768人(占93.43%)总数1469531人(占36.15%)778人(占52.96%)42人(占2.86%)1351人(占91.97%)其中,提高组获奖人数(583人)占复赛90.11%,普及组获奖人数(768人)占复赛93.43%,全省获奖人数(1351人)占复赛总人数91.97%。
noip2018普及组初赛试题+答案

第24届全国青少年信息学奥林匹克联赛初赛普及组C++语言试题竞赛时间:2018 年10 月13 日14:30~16:30选手注意:1、试题纸共有7 页,答题纸共有2 页,满分100 分。
请在答题纸上作答,写在试题纸上的一律无效。
2、不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共15题,每题2分,共计30分;每题有且仅有一个正确选项)1. 以下哪一种设备属于输出设备:( )A.扫描仪B.键盘C.鼠标D.打印机2. 下列四个不同进制的数中,与其它三项数值上不相等的是( )。
A. (269)16 (注解:2 * 16^2 + 6 * 16^1 + 9 * 16 ^0 = 617)B. (617)10C. (1151)8 (注解:1 * 8^3 + 1 * 8^2 + 5 * 8^1 + 1 * 8^0 = 617)D. (1001101011)23. 1MB等于( )。
A. 1000 字节B. 1024 字节C. 1000 X 1000字节D. 1024 X 1024字节4. 广域网的英文缩写是( )。
A. LANB. WAN (Wide Area Network)C. 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. 以下排序算法中,不需要进行关键字比较操作的算法是( )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二十四届全国青少年信息学奥林匹克联赛初赛提高组 C++语言试题竞赛时间:2018 年 10 月 13 日 14:30~16:30(WORD重新整理排版)选手注意:●试题纸共有 9 页,答题纸共有 2 页,满分 100 分。
请在答题纸上作答,写在试题纸上的一律无效。
●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共 10 题,每题 2 分,共计 20 分;每题有且仅有一个正确选项)1. 下列四个不同进制的数中,与其它三项数值上不相等的是()。
A. (269)16B. (617)10C. (1151)8D. (1001101011)22. 下列属于解释执行的程序设计语言是()。
A. CB. C++C. PascalD. Python3. 中国计算机学会于()年创办全国青少年计算机程序设计竞赛。
A. 1983B. 1984C. 1985D. 19864. 设根节点深度为 0,一棵深度为 h 的满 k(k>1)叉树,即除最后一层无任何子节点外,每一层上的所有结点都有 k 个子结点的树,共有()个结点。
A. (k h+1 - 1) / (k - 1)B. k h-1C. k hD. (k h-1 ) / (k - 1)5. 设某算法的时间复杂度函数的递推方程是 T(n) = T(n - 1) + n(n 为正整数)及 T(0) = 1,则该算法的时间复杂度为()。
A. O(log n)B. O(n log n)C. O(n)D. O(n2 )6. 表达式 a * d - b * c 的前缀形式是()。
A. a d * b c * -B. - * a d * b cC. a * d - b * cD. - * * a d b c7. 在一条长度为 1 的线段上随机取两个点,则以这两个点为端点的线段的期望长度是()。
A. 1 / 2B. 1 / 3C. 2 / 3D. 3 / 58. 关于 Catalan 数 Cn = (2n)! / (n + 1)! / n!,下列说法中错误的是()。
A. Cn 表示有 n + 1 个结点的不同形态的二叉树的个数。
B. Cn 表示含 n 对括号的合法括号序列的个数。
C. Cn 表示长度为 n 的入栈序列对应的合法出栈序列个数。
D. Cn 表示通过连接顶点而将 n + 2 边的凸多边形分成三角形的方法个数。
9. 假设一台抽奖机中有红、蓝两色的球,任意时刻按下抽奖按钮,都会等概率获得红球或蓝球之一。
有足够多的人每人都用这台抽奖机抽奖,假如他们的策略均为:抽中蓝球则继续抽球,抽中红球则停止。
最后每个人都把自己获得的所有球放到一个大箱子里,最终大箱子里的红球与蓝球的比例接近于()。
A. 1 : 2B. 2 : 1C. 1 : 3D. 1 : 110. 为了统计一个非负整数的二进制形式中 1 的个数,代码如下:int CountBit(int x){int ret = 0;while (x){ret++;________;}return ret;}则空格内要填入的语句是()。
A. x >>= 1B. x &= x - 1C. x |= x >> 1D. x <<= 1二、不定项选择题(共 5 题,每题 2 分,共计 10 分;每题有一个或多个正确选项,多选或少选均不得分)1. NOIP 初赛中,选手可以带入考场的有()。
A. 笔B. 橡皮C. 手机(关机)D. 草稿纸2. 2-3 树是一种特殊的树,它满足两个条件:(1)每个内部结点有两个或三个子结点;(2)所有的叶结点到根的路径长度相同。
如果一棵 2-3 树有 10 个叶结点,那么它可能有()个非叶结点。
A. 5B. 6C. 7D. 83. 下列关于最短路算法的说法正确的有()。
A. 当图中不存在负权回路但是存在负权边时,Dijkstra 算法不一定能求出源点到所有点的最短路。
B. 当图中不存在负权边时,调用多次 Dijkstra 算法能求出每对顶点间最短路径。
C. 图中存在负权回路时,调用一次 Dijkstra 算法也一定能求出源点到所有点的最短路。
D. 当图中不存在负权边时,调用一次 Dijkstra 算法不能用于每对顶点间最短路计算。
4. 下列说法中,是树的性质的有()。
A. 无环B. 任意两个结点之间有且只有一条简单路径C. 有且只有一个简单环D. 边的数目恰是顶点数目减 15. 下列关于图灵奖的说法中,正确的有()。
A. 图灵奖是由电气和电子工程师协会(IEEE)设立的。
B. 目前获得该奖项的华人学者只有姚期智教授一人。
C. 其名称取自计算机科学的先驱、英国科学家艾伦·麦席森·图灵。
D. 它是计算机界最负盛名、最崇高的一个奖项,有“计算机界的诺贝尔奖”之称。
三、问题求解(共 2 题,每题 5 分,共计 10 分)1. 甲乙丙丁四人在考虑周末要不要外出郊游。
已知①如果周末下雨,并且乙不去,则甲一定不去;②如果乙去,则丁一定去;③如果丙去,则丁一定不去;④如果丁不去,而且甲不去,则丙一定不去。
如果周末丙去了,则甲________(去了/没去)(1 分),乙________(去了/没去)(1 分),丁________(去了/没去)(1 分),周末________(下雨/没下雨)(2 分)。
2. 方程 a*b = (a or b) * (a and b),在 a,b 都取 [0, 31] 中的整数时,共有_____组解。
(*表示乘法;or 表示按位或运算;and 表示按位与运算)四、阅读程序写结果(共 4 题,每题 8 分,共计 32 分)1.#include <cstdio>int main() {int x;scanf("%d", &x);int res = 0;for (int i = 0; i < x; ++i) {if (i * i % x == 1) {++res;}}printf("%d", res);return 0;}输入:15输出:__________2.#include <cstdio>int n, d[100];bool v[100];int main() {scanf("%d", &n);for (int i = 0; i < n; ++i) {scanf("%d", d + i);v[i] = false;}int cnt = 0;for (int i = 0; i < n; ++i) {if (!v[i]) {for (int j = i; !v[j]; j = d[j]) {v[j] = true;}++cnt;}}printf("%d\n", cnt);return 0;}输入: 10 7 1 4 3 2 5 9 8 0 6输出:___________3.#include <iostream>using namespace std;string s;long long magic(int l, int r) {long long ans = 0;for (int i = l; i <= r; ++i) {ans = ans * 4 + s[i] - 'a' + 1;}return ans;}int main() {cin >> s;int len = s.length();int ans = 0;for (int l1 = 0; l1 < len; ++l1) {for (int r1 = l1; r1 < len; ++r1) {bool bo = true;for (int l2 = 0; l2 < len; ++l2) {for (int r2 = l2; r2 < len; ++r2) {if (magic(l1, r1)==magic(l2, r2) &&(l1!=l2 || r1!=r2)) {bo = false;}}}if (bo) {ans += 1;}}}cout << ans << endl;return 0;}输入:abacaba输出:________________4.#include <cstdio>using namespace std;const int N = 110;bool isUse[N];int n, t;int a[N], b[N];bool isSmall() {for (int i = 1; i <= n; ++i)if (a[i] != b[i]) return a[i] < b[i];return false;}bool getPermutation(int pos) {if (pos > n) {return isSmall();}for (int i = 1; i <= n; ++i) {if (!isUse[i]) {b[pos] = i; isUse[i] = true;if (getPermutation(pos + 1)) {return true;}isUse[i] = false;}}return false;}void getNext() {for (int i = 1; i <= n; ++i) {isUse[i] = false;}getPermutation(1);for (int i = 1; i <= n; ++i) {a[i] = b[i];}}int main() {scanf("%d%d", &n, &t);for (int i = 1; i <= n; ++i) {scanf("%d", &a[i]);}for (int i = 1; i <= t; ++i) {getNext();}for (int i = 1; i <= n; ++i) {printf("%d", a[i]);if (i == n) putchar('\n'); else putchar(' ');}return 0;}输入1:6 10 1 6 4 5 3 2输出1:__________(3分)输入2:6 200 1 5 3 4 2 6输出2:__________(5分)五、完善程序(共共 2 题,每题 14 分,共计 28 分)1. 对于一个1到n的排列P(即1到n中每一个数在P中出现了恰好一次),令q i为第个位置之后第一个比P i值更大的位置,如果不存在这样的位置,则q i=n +1。