全国信息学奥林匹克联赛1
- 格式:wps
- 大小:24.00 KB
- 文档页数:3
全国青少年信息学计算机奥林匹克竞赛及其分区联赛一、简介经中国科协、国家教育部批准,由中国计算机学会主办的全国青少年信息学计算机奥林匹克竞赛(简称NOI)(NOI in Provinces),是一项全国性的青少年学科竞赛活动,是计算机知识在青少年中普及的产物。
我国的青少年计算机普及教育起步于80年代初的青少年课外科技活动。
随着科学技术的发展,计算机技术已成为继自然语言和数学语言之后人类必须掌握的第三种通用智力工具。
计算机技术与基础教育的结合,已成为我国教育面向现代化、面向世界、面向未来的一大趋势。
邓小平同志以老一辈革命家的远见卓识,高度赞扬了在青少年中开展计算机普及活动的做法;发出了“计算机的普及要从娃娃做起”的伟大号召。
从此,有成千上万的青少年加入到学习计算机、使用计算机的行列中来,使我国的计算机普及教育掀起了一个高潮。
在邓小平同志发出号召以后,由中国科协和教育部联合委托中国计算机学会兴办了首届全国青少年计算机程序设计竞赛活动。
这个新的活动形式一出现,就受到了党和政府的关怀和支持。
王震同志在颁奖大会上发言,代表党中央肯定了"教育部和中国科协又为青少年办了一件很有意义、很有远见的好事"。
党和政府的支持、老一辈革命家的关心更加激励了广大青少年投身于NOI活动之中,使这项活动从一开始就有了相当的地位和影响,成为我国青少年计算机普及教育活动中最有代表性的形式。
2000年于北京举办的第12届国际信息学奥林匹克竞赛(IOI),江泽民主席致了贺信。
贺信中说:“在人类即将进入新世纪之际以信息科技和生命科技为核心的科技进步与创新正在深刻地改变着人类的生产和生活方式,推动着世界文明的发展。
青年是人类的未来,也是世界科技发展的未来。
国际信息学奥林匹克竞赛活动,对年轻一代了解和掌握现代科学技术,养成创新精神具有重要作用”。
作为与国际奥林匹克学科竞赛接轨的全国信息学奥林匹克竞赛,举办NOI 活动的宗旨就是在青少年中普及计算机科学,通过组织信息学奥林匹克竞赛使学生开阔眼界、扩大知识面;了解计算机在现代化社会中的战略地位培养并促其能力得以发展;通过竞赛发现人才,对有才华的青少年起到激励作用。
全国青少年信息学奥林匹克竞赛条例第一章总则1. 全国青少年信息学奥林匹克竞赛(National Olympiad in Informatics, 简称NOI是一项面向全国青少年的信息学竞赛和普及活动,旨在向那些在中学阶段学习的青少年普及计算机科学知识;给学校的信息技术教育课程提供动力和新的思路;给那些有才华的学生提供相互交流和学习的机会;通过竞赛和相关的活动培养和选拔优秀的计算机人才。
竞赛的目的是为了在更高层次上推动普及。
本竞赛及其相关活动遵循开放性原则,任何有条件和有兴趣的学校和个人,都可以在业余时间自愿参加。
本活动不和现行的学校教学相冲突,也不列入教学计划,是课外性质的因材施教活动。
参加者可为初高中学生或其他中等专业学校的青少年。
2. NOI及其系列活动由中国科学技术协会主管,中国计算机学会主办。
3. NOI系列活动包括:1 全国青少年信息学奥林匹克竞赛(简称信息学奥赛)。
以省(包括自治区、直辖市,下同)为单位组织参加的全国性比赛,比赛集中在同一地点在同一时间内举行。
每队4名选手。
每一位参赛选手必须是经选拔产生的。
未组织选拔的省,没有资格参加NOI。
2 全国青少年信息学奥林匹克联赛(National Olympiad in Informatics in Provinces, 简称NOIP或联赛。
联赛分初赛和复赛两个阶段。
初赛以通用和实用的计算机知识为考试内容,重在考察基础与实用的知识,以笔试为主。
复赛为程序设计。
参加初赛者须达到一定分数线后才有资格参加复赛。
各省都应参加联赛,参加联赛是参加NOI的必要条件。
3 全国青少年信息学奥林匹克竞赛冬令营(NOI冬令营,简称冬令营。
在每年的冬季假期开展的为期一周的培训活动。
4 国际信息学奥林匹克竞赛(International Olympiad in Informatics, 简称IOI中国队选拔赛(IOI选拔赛,简称选拔赛。
为参加当年举行的IOI而进行的选拔赛。
随着信息技术的迅速发展,信息学奥林匹克竞赛已经成为了全国各地中小学生之间的一项重要赛事。
本文将为大家介绍2021年全国信息学奥林匹克竞赛系列赛事的获奖名单,让我们一起来看看这些优秀的学子们都取得了怎样的成绩。
一、全国信息学奥林匹克竞赛初赛获奖名单1. A同学(广东省XX市XX学校)2. B同学(江苏省XX市XX学校)3. C同学(北京市XX中学)4. D同学(上海市XX中学)5. E同学(浙江省XX中学)二、全国信息学奥林匹克竞赛复赛获奖名单1. F同学(山东省XX市XX学校)2. G同学(河南省XX市XX学校)3. H同学(辽宁省XX中学)4. I同学(四川省XX中学)5. J同学(湖北省XX中学)1. K同学(湖南省XX市XX学校)2. L同学(陕西省XX市XX学校)3. M同学(黑龙江省XX中学)4. N同学(福建省XX中学)5. O同学(云南省XX中学)四、全国信息学奥林匹克竞赛总决赛获奖名单1. P同学(天津市XX学校)2. Q同学(重庆市XX学校)3. R同学(内蒙古自治区XX中学)4. S同学(广西壮族自治区XX中学)5. T同学(西藏自治区XX中学)以上就是2021年全国信息学奥林匹克竞赛系列赛事的获奖名单,这些获奖同学们在激烈的比赛中脱颖而出,展现出了优秀的信息学才华和解决问题的能力。
相信在今后的学习和生活中,他们会继续发扬优秀的传统,为祖国的信息技术事业做出更大的贡献。
希望更多的学子可以加入到信息学奥林匹克竞赛中来,共同促进信息技术的发展和进步。
由于信息学奥林匹克竞赛的吸引力和影响力不断提升,每年参赛的学生人数也在不断增加。
这项竞赛不仅提升了学生的编程能力和解决问题的能力,也激发了学生对信息技术相关领域的兴趣,促进了信息技术教育的发展。
信息学奥林匹克竞赛的举办让更多的学生接触到了编程和算法。
随着社会的不断发展,信息技术的应用场景也在不断扩大,对高素质的信息技术人才需求也越来越大。
全国青少年信息学奥林匹克竞赛联赛试题大纲一、试题形式每次联赛的试题分四组:普及组初赛题A1、普及组复赛题A2、提高组初赛题B1和提高组复赛题B2。
其中,A1和B1类型相同,A2和B2类型相同,但题目不完全相同,提高组难度高于普及组.(一般初中学生参加普及组,高中或中专学生参加提高组)初赛:初赛全部为笔试,满分100分。
试题由四部分组成:1、选择题:共20题,每题1.5分,共计30分。
每题有5个备选答案,前10个题为单选题(即每题有且只有一个正确答案,选对得分),后10题为不定项选择题(即每题有1至5个正确答案,只有全部选对才得分).2、问题求解题:共2题,每题5分,共计10分。
试题给出一个叙述较为简单的问题,要求学生对问题进行分析,找到一个合适的算法,并推算出问题的解。
考生给出的答案与标准答案相同,则得分;否则不得分。
3、程序阅读理解题:共4题,每题8分,共计32分。
题目给出一段程序(不一定有关于程序功能的说明),考生通过阅读理解该段程序给出程序的输出。
输出与标准答案一致,则得分;否则不得分。
4、程序完善题:共2题,每题14分,共计28分。
题目给出一段关于程序功能的文字说明,然后给出一段程序代码,在代码中略去了若干个语句或语句的一部分并在这些位置给出空格,要求考生根据程序的功能说明和代码的上下文,填出被略去的语句。
填对则得分;否则不得分。
复赛:复赛的题型和考试形式与NOI类似,全部为上机编程题,但难度比NOI低。
题目包括4道题,每题100分,共计400分。
每一试题包括:题目、问题描述、输入输出要求、样例描述及相关说明。
测试时,测试程序为每道题提供了5—10组测试数据,考生程序每答对一组得10-20分,累计分即为该道题的得分。
二、试题的知识范围1.初赛内容与要求:2、复赛内容与要求:在初赛的内容上增加以下内容。
C ++ 是世界上速度非常快的编程语言,也是人工智能和机器人开发的重要语言之一。
1. 全国青少年信息学奥林匹克联赛(NOIP)NOIP 每年由中国计算机学会统一组织。
在同一时间、不同地点以各省市为单位由特派员组织。
全国统一大纲、统一试卷。
联赛分为普及组和提高组,小学生可以参加普及组,初中生也可以参加提高组比赛。
初赛考察通用和实用的计算机普及科学知识,以笔试为主。
复赛为程序设计,须在计算机上调试完成。
参加初赛者须达到一定分数线(分数线按所在省市的平均分而定)后才有资格参加复赛。
联赛分普及组和提高组两个组别,难度不同,分别面向初中和高中阶段的学生。
参赛对象:普及组(初中)、提高组(高中)举办时间:每年10-11月升学帮助:中考:科技特长生,校内保送推荐排名有加分高考:各地重点高中保送资格或加分等优惠政策,优胜者可作为省代表队成员参加全国决赛(NOI)及夏令营比赛。
2. 全国青少年信息学奥林匹克竞赛(NOI)NOI 是目前国内含金量比较高的比赛,获奖者往往是名校热抢的香饽饽。
许多这个比赛的获奖者最终选择国外深造。
同时,要想参加亚洲与太平洋地区信息学奥赛(APIO)和国际信息学奥林匹克竞赛(IOI)也需要在这个比赛中获奖。
参赛对象:全国初高中在校生举办时间:每年7月升学帮助:中考:科技特长生,校内保送推荐排名有加分。
高考:铜牌以上将可获得自主招生名额(高考加5~30分)和大学保送资格。
进入国家集训队的有机会获清华北大保送名额,其余获奖选手还可参加79所985、211高校自主招生报名。
3. 国际青少年信息学奥林匹克竞赛(IOI)IOI 是国际性质含金量高的比赛,获奖者往往是各国际名校热抢的香饽饽。
比赛包含两天的计算机机程序设计,解决算法问题。
选手以个人为单位,每个国家可选派4名选手参加,参赛选手从各国相应的信息学奥林匹克竞赛中选拔。
中国从首届开始,参加了迄今为止全部八届的比赛,取得了优异的成绩。
中国队共参赛31人次,全部荣获奖牌,被评为“整体实力较强的队”。
全国信息学奥林匹克联赛(NOIP2007)复赛普及组 1.奖学金 (scholar.pas/c/cpp) 【问题描述】 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。
期末,每个学生都有3门课的成绩:语文、数学、英语。
先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。
任务:先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前五名名学生的学号和总分。
注意,在前5名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。
例如,在某个正确答案中,如果前两行的输出数据(每行输出两个数:学号、总分) 是: 7 279 5 279 这两行数据的含义是:总分最高的两个同学的学号依次是7号、5号。
这两名同学的总分都是279 (总分等于输入的语文、数学、英语三科成绩之和) ,但学号为7的学生语文成绩更高一些。
如果你的前两名的输出数据是: 5 279 7 279 则按输出错误处理,不能得分。
【输入】 输入文件scholar.in包含n+1行: 第1行为一个正整数n,表示该校参加评选的学生人数。
第2到n+1行,每行有3个用空格隔开的数字,每个数字都在O到100之间z第1行的3个数字依次表示学号为j-1的学生的语文、数学、英语的成绩。
每个学生的学号按照输入顺序编号为l~n (恰好是输入数据的行号减1)。
所给的数据都是正确的,不必检验。
【输出】 输出文件scholar.out共有5行,每行是两个用空格隔开的正整数,依次表示前5名学生的学号和总分。
【输入输出样例1】 scholar.in 6 90 67 80 87 66 91 78 89 91 88 99 77 67 89 64 78 89 98 scholar.out 6 265 4 264 3 258 2 244 1 237 【输入输出样例2】 scholar. in 8 80 89 89 88 98 78 90 67 80 87 66 91 78 89 91 88 99 77 67 89 64 78 89 98 scholar. out 8 265 2 264 6 264 1 258 5 258 【限制】 50%的数据满足:各学生的总成绩各不相同100%的数据满足: 6<=n<=300 2.纪念品分组 (group.pas/c/cpp) 【题目描述】 元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。
为使得参加晚会的同学所获得的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品,并且每组纪念品的价格之和不能超过一个给定的整数。
为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。
你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。
【输入】 输入文件group.in包含n+2行: 第1行包括一个整数w,为每组纪念品价格之和的上眼= 第2行为一个整数n,表示购来的纪念品的总件数G 第3-n+2行每行包含一个正整数Pi (5 <= Pi <= w3)w表示所对应纪念品的价格。
【输出】 输出文件group.out仅→行,包含一个整数,ep最少的分组数目合 【输入输出样例】 group.in 100 9 90 20 20 30 50 60 70 80 90 group. out 6 【限制】 50%的数据满足: 1 <=n <= 15 100%的数据满足: 1 <= n <= 30000,80 <= W <= 200 3. 守望者的逃离 (escape.pas/c/cpp) 【问题描述】 恶魔猎手尤迫安野心勃勃.他背叛了暗夜精灵,率深藏在海底的那加企图叛变:守望者在与尤迪安的交锋中遭遇了围杀.被困在一个荒芜的大岛上。
为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会沉下去,到那时,刀上的所有人都会遇难:守望者的跑步速度,为17m/s,以这样的速度是无法逃离荒岛的。
庆幸的是守望者拥有闪烁法术,可在1s内移动60m,不过每次使用闪烁法术都会消耗魔法值10点。
守望者的魔法值恢复的速度为4点/s,只有处在原地休息状态时才能恢复。
现在已知守望者的魔法初值M,他所在的初始位置与岛的出口之间的距离S,岛沉没的时间T。
你的任务是写一个程序帮助守望者计算如何在最短的时间内逃离荒岛,若不能逃出,则输出守望者在剩下的时间内能走的最远距离。
注意:守望者跑步、闪烁或休息活动均以秒(s)为单位。
且每次活动的持续时间为整数秒。
距离的单位为米(m)。
【输入】 输入文件escape.in仅一行,包括空格隔开的三个非负整数M,S,T。
【输出】 输出文件escape.out包含两行: 第1行为字符串"Yes"或"No" (区分大小写),即守望者是否能逃离荒岛。
第2行包含一个整数,第一行为"Yes" (区分大小写)时表示守望着逃离荒岛的最短时间 第一行为"No" (区分大小写) 时表示守望者能走的最远距离。
【输入输出样例1】 escape.in 39 200 4 escape.out No 197 【输入输出样例2】 escape.in 36 255 10 escape.out Yes 6 【限制】 30%的数据满足: 1 <= T<= 10,1 <=S<= 100 50%的数据满足: 1 <= T <= 1000,1 <= S <= 10000 100%的数据满足: 1 <= T <= 300000,0 <= M<=1000 1 <=S <= 10^8 4.Hanoi双塔问题 hanoi.pas/c/cpp 【问题描述】 给定A,B,C三根足够长的细柱,在A柱上放有2n个中间有空的圆盘,共有n 个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的(下图为n=3的情形)。
现要将这些国盘移到C柱上,在移动过程中可放在B柱上暂存。
要求: (1)每次只能移动一个圆盘; (2) A、B、C三根细柱上的圆盘都要保持上小下大的顺序; 任务:设An为2n个圆盘完成上述任务所需的最少移动次数,对于输入的n,输出An。
【输入】 输入文件hanoi.in为一个正整数n,表示在A柱上放有2n个圆盘。
【输出】 输出文件hanoi.out仅一行,包含一个正整数,为完成上述任务所需的最少移动次数An。
【输入输出样例1】 hanoi.in 1 hanoi.out 2 【输入输出样例2】 hanoi.in 2 hanoi.out 6 【限制】 对于50%的数据,1<=n<=25 对于100% 数据,1<=n<=200 【提示】 设法建立An与An-1的递推关系式 因为网上没有解题报告,我就自己写了一个。
请参考: Noip2007解题报告 ——by o0rqy0o(就是我啦~~~~~) 第一题:scholar 这个题没什么特别的,主要考察大家对编程的熟练程度。
可用二维数组a 的a[1,i]记录下语文成绩,再用a[1,i]、a[3,i]记录总分、编号。
因为数据最多就300个,所以排序可以用冒泡。
在排序时可以将序号也排序,方便控制下标。
我的程序如下: program scholar(input,output); var n,x,y,z,i,j:integer; a:array[1..300,1..3] of integer; procedure swap(var a,b:integer); var s:integer; begin s:=a; a:=b; b:=s; end; begin assign(input,'scholar.in'); assign(output,'scholar.out'); reset(input); rewrite(output); readln(n); for i:=1 to n do begin readln(x,y,z); a[i,1]:=i; a[i,2]:=x; a[i,3]:=x+y+z; end; for i:=1 to n-1 do for j:=i+1 to n do if (a[i,3]<a[j,3]) or ((a[i,3]=a[j,3]) and (a[i,2]<a[j,2])) or ((a[i,1]>a[j,1]) and (a[i,3]=a[j,3]) and (a[i,2]=a[j,2])) then begin swap(a[i,1],a[j,1]); swap(a[i,2],a[j,2]); swap(a[i,3],a[j,3]); end; for i:=1 to 5 do writeln(a[i,1],' ',a[i,3]); close(input); close(output); end. 第二题:group 这题也不难,有许多人把它想成了DP,其实就是简单的模拟。
先排序(也可用冒泡),然后用2个指针控制下标,每次把第一个(头指针对应数据)和最后一个(尾指针对应数据)相加。
若比W 大则将计数器加1,同时后移头指针;若比小于等于W,则计数器加1,同时将头指针后移1位,尾指针前移1位。
最后输出计数器结果。
程序如下: program group(input,output); var a:array[1..30000] of integer; w,n,i,j,s:integer; procedure qsort(h,t:integer); var p,i,j:integer; begin i:=h; j:=t; p:=a; repeat while (a[j]>p) and (j>i) do j:=j-1; if j>i then begin a:=a[j]; i:=i+1; while (a<p) and (i<j) do i:=i+1; if i<j then begin a[j]:=a; j:=j-1; end; end; until i=j; a:=p; i:=i+1; j:=j-1; if i<t then qsort(i,t); if j>h then qsort(h,j); end; begin assign(input,'group.in'); assign(output,'group.out'); reset(input); rewrite(output); readln(w); readln(n); for i:=1 to n do readln(a); qsort(1,n); i:=1; j:=n; s:=0; while i<=j do begin if i=j then begin s:=s+1; break; end; if a+a[j]<=w then begin i:=i+1; j:=j-1; s:=s+1; end; if a+a[j]>w thenbegin s:=s+1; j:=j-1; end; end; writeln(s); close(input); close(output); end. 第三题:escape 没必要用什么DP,还是用模拟。