新手准备入门信息学奥赛noip这篇文章或许对你帮助很大
新手学信息学竞赛如何入门,知乎上有一个话题讨论,我们也引用一些比较优质的回答给各位同学和家长一些参考。
中国少儿编程网这样回答:
1、问:信息学相关的竞赛有哪些?
答:NOIP是全国青少年信息学奥林匹克联赛,主要是是省级比赛。每年的10月初赛,11月复赛,通常都是提前两三年准备。
NOI是全国青少年信息学奥林匹克竞赛,是面向中学生的全国性质的编程最高级别比赛。
IOI是国际信息学奥林匹克竞赛,是面向全世界中学生的一年一度的信息学学科竞赛,每个国家最多可选派4名选手参加。
ACM主要是指ACM-ICPC,即国际大学生程序设计竞赛,包括全球总决赛和各大洲的区域赛。
如果NOIP成绩好,对于入选省队并参加NOI会有一定的帮助。同时,NOIP系列比赛和ACM系列比赛的题型和内容类似,准备NOIP比赛对后续的国家级和国际级大赛也很有帮助。
2、问:那如果想走信息学比赛这条路,是需要先从NOIP比赛开始准备?
答:是的,NOIP是所有中学参赛者首先会接触到的比赛,也是后面比赛的基础。
NOIP自1995年至2017年已举办23次。每年由中国计算机学会统一组织。
联赛分初赛和复赛两个阶段。联赛分普及组和提高组两个组别,难度不同,分别面向初中和高中阶段的学生。
小学、初中可以参加普及组的比赛;
小学、初中、高中都可以参加提高组的比赛。
3、问:很多家长最关心的问题,NOIP的现实好处是什么?
答:NOIP取得好的成绩对参加名校的自主招生有一定的帮助。进入国家集训队的,可以直接保送清华北大。其他获奖选手可通过夏令营、冬令营、科学营、体验营等各种自主招生渠道争取到降20-60分甚至本一线的录取优惠。
据悉,清华大学、北京大学已经和参与2018年信息学冬令营的部分学生签订了包括:无条件降至一本线录取、 有条件降至一本线录取、 有条件降 60 分、30 分等不同档次的降分优惠。
去年年底澎湃新闻报道的15岁的四川男生王思齐高中就凭借优异的全国青少年信息学奥林匹克竞赛成绩获得了清华大学2019年自主招生降到一本线的录取优惠。
享受清华大学降一本线录取优惠的王思齐
除此之外,很多地方,很多在NOIP中获得优异成绩的小学生,对于小升初择校也有很大的帮助(不同区域相关政策不同)。
4、问:几年级开始准备NOIP最好?
答:有的孩子小学就开始学习,或许可在小升初时享受到信息特长生优惠(根据当地政策而定)。
进入初中后,可争取初一拿普及组一等奖,初二开始可直接参加提高组竞赛,或许可在中考升学时享受优惠(根据当地政策而定)。这样高一就可以冲刺提高组一等奖,并且可以冲省队、冲国赛了。
其实,更多的孩子可能是从初一开始,进程和小学开始差不多,参赛也很从容。如果初中毕业才开始,那么节奏可能会有一点紧凑了。
5、问:NOIP学什么?
答:参加NOIP,首先要学的是C++,因为参加比赛时程序都是用C++编写的。这里的C++基本只涉及C语言和STL,而C++特有的类、模板等内容很少涉及。
当然C++只是基础,信息学竞赛的核心是算法和数据结构,需要选手分析问题,并通过算法和数据结构大大提升程序效率,这也是信息学竞赛的魅力所在。
如果是小学开始,一般建议增加一部分:即编程入门,目的是培养孩子学习编程的兴趣和信心,至于学习时间要视孩子的具体情况而定。
6、问:NOIP选择的编程语言那么多,我们为什么要选择学习C++呢?
答:嗯,目前NOIP可以使用C、C++和Pascal三种编程语言,而2022年以后,NOIP比赛C和Pascal语言将不再可用,只剩下C++了。
7、问:0基础的孩子是直接学C++还是先学习其他语言打基础比较好?
答:像我刚才说的,如果是小学开始,一般建议增加一部分:编程入门。
02 备赛小技巧(建议收藏)
下面我分享一下我个人备赛过程中的自己觉得比较好的一些书籍、网站以及一些小的技巧。
首先是入门阶段。
语言基础方面,首先要学习C++,但并不需要面向对象的知识,基本上是C和STL,C的部分可以看《啊哈!C语言》,C++和STL的部分可以看《算法竞赛入门经典(第2版)》的语言篇。
除此之外,还要加强各类题目的训练。
再就是进阶阶段。
对于有进阶需求的同学,建议大家可以详细看一下《算法竞赛入门经典(第2版)》以及《算法竞赛入门经典(训练指南)》,并尽量完成上面的练习题。
除此之外,可以多刷一些历年NOIP的题目,以及省选的题目。
以上需要大量投入时间,刷题的时候注意尽量刷“刚好能做出来”的题目,思考一段时间(比如一天)之后还没有头绪,或者程序一直调试不出来的话,可以看一下书上或者搜索一下网络上的资料,一般的题目都会有人在网上发题解,但是千万不要依赖题解,自己思考的过程才是最重要的。
王小宇:
首先声明,我是一个高一的OIer,有的东西只是自己的感受,大家不要太计较啦
我是从初一下学期开始学习的,现在也是将近三个整年了。
基础的东西一定不能忘,NOIP2015是我第一次参加NOIP,当时稀里糊涂的过了初赛,复赛之前掌握的东西真的很少,复赛前一天我才学到高精度计算。那时候用的是Pascal,学习数组的时候因为比较赶,所以没大练习,顶多是能比较基础地使用一维数组。结果,相信大家都记得,NOIP2015普及第二题,扫雷,需要开二维数组。当时我一看这道题就懵了,完全想不起来二维数组怎么开了,怎么调试也过不了,最后,普及二等。
其实,还是我太弱了,毕竟这么基础的东西怎么能忘掉呢。
NOIP2016的时候,初三,那时候数据结构只是学了点基础,但对于普及组来说也足够了。复赛的时候,可以说是基本没用到数据结构和算法,最多就是第三题用了一个桶排序,前两题全部暴力模拟,但是当时模拟打的比较稳,所以前两题AC。结果,NOIP2016普及一等。
所以说,最基本的暴力模拟也是一定要熟练的,毕竟很多时候正解是很难想出来的,这时如果你的暴力打的稳,并且优化的好的话,只要数据不是很大或者很坑,也是能拿到不少分的。
其实,归根结底,还是要努力学啊,如果你能把考点内容全都掌握的很熟练,那还用什么暴力模拟呢?随手一打那就是550+啊。如果心态好、精神充足的话,AK也是有可能哦。当然,那需要很扎实的知识基础和丰富的经验了。
还有,我觉得一个好的学习氛围是很重要的。如果你有很好的教练团队或者水平很高的同学的话,氛围肯定是不一样的。在这种氛围下,只要你能认真努力,我想就算想学不好也很难吧。
下文是NOIP吧吧友(账号:lm40015410)对个人NOIP 之旅的一个总结,主要针对初次参加NOIP的普及组新生。总结了去年的教训,也参考了一部分神犇的资料,希望能给各位新生们一个参考。
距离NOIP2017还有三个多月的时间,这几个月可以干很多事,这也就是我接下来要说的。送给大家一个公式:竞赛成绩=实力x经验 给大家解释一下这个公式。我有一个同学,可以算是神犇级别的了吧。他的竞赛实力相当牛b,单源、DP什么的伪代码能轻松默下来,红黑树、博弈论甚至FFT都能讲得头头是道,而且仅仅是一名初二学生!
去年他参加了NOIP普及组的比赛,结果出人意料——只有第一题分解质数(好像叫这个名吧...)得了10分,其他题全部爆0。事实上,他所有题都做了,但是他是抱着AK的心来的,所有的题他都是只过了样例就去做下一道了。你们也知道的,CCF的样例向来都很弱,尤其是去年...他竞赛实力弱吗?一点不弱,他是我们那个考场唯一一个文化之旅写了SPFA这个正确算法的人。但是,很可惜,由于某变量忘记置0导致爆0,考试结束的时候甚至连样例都没试。
第一题,一个逻辑错误;第二题,某情况下变量加不+1但是没考虑;第三题,强行按照自然数拆分的办法写的DFS;这些错误很小,但是这千里之堤就毁于小小的蚁穴了!他的竞赛实力很强,但是做题经验几乎为0,他几乎所有的时间都用在了研究算法上,很少做题。
我相信看我这篇文章的同学里也有类似,一段代码出来,大的框架没有问题,就是WA(1),后来抓耳挠腮找了几个小时才发现就是诸如变量初值,变量置零,递归形参、局部全局变量用错这样的小问题。实不相瞒,我直到现在依然如此。为什么?答案很简单,做题少了!做的题多了,错误出得多了,也就有经验了,熟能生巧嘛!
拿到一道题,有经验的人会先按照人类处理该问题的思维去构造一个数学模型,然后去掉不必要的模拟,找可行优化,选用合适的数据结构和算法去实现,整个过程10多分钟就好了,绝对比你边写边想算法犯了逻辑错误去查几个小时要划算!
呵呵,说的偏了,但都是大实话。前言的最后送给大家几句话:
不要好高骛远,即使是大神的第一次也不会顺风顺水;
不要掉以轻心,即使是NOI也有忘记删调试输出、变量打反、没用文件这样错误的人;
不要垂头丧气,CLJ也是高三才拿到IOI冠军!我们还年轻...
陈立杰(CLJ),1995年8月1日出生,现就读于清华大学交叉信息学院。自2010年8月以来,多次在信息学奥赛(OI)中取得令人震惊的好成绩,是OI界的奇迹人物之一。
考场瞬息万变,有不会做的题很正常。平心静气,先做简单的题,如果一道你有正确算法的题答案却不对,很可能是小错误,不要轻易放弃做别的题,那样可能会让你直到考试结束一道题也没做出来。
多做题,多思考,心要静!
注释:(1) OJ上的测试结果。
WA :wrong answer 错误的答案
AC:Accepted答案正确;通过
TLE:Time Limit Exceed 超时
OLE:Output Limit Exceed超过输出限制
MLE:Memory Limit Exceed超内存
RE:Runtime Error运行时错误
PE:Presentation Error格式错误
CE:Compile Error无法编译
初赛
初赛的考察内容的一部分是计算机的基础知识,比如进制转换,工作原理,算法原理、历史事件名人等。这些对于大部分第一次参加NOIP的同学来说应该比较陌生,这样的知识只能通过平时的积累,从现在就开始搜索资料,有意识的去记忆。
另一部分是数学内容,包括排列、组合等大概高中的数学知识,需要下载资料去研习,背公式。
最后一部分是程序完成。如果说前面2部分还有补习的希望,最后这一部分完全是靠你的做题基础,没有捷径,只能靠你平时多做题,对部分简单算法有些了解。
初赛形式为笔试,描述语言为C/C++或Pascal。各省市初试成绩在本赛区前百分之十五的学生进入复赛,其分数不计入复赛的成绩。初赛时间为10月的第三个星期六下午2:30 - 4:30举行。
1、选择题:共20题,每题1.5分,共30分。每题有4个备选答案。试题内容包括计算机基本组成与原理、计算机基本操作、信息科技与人类社会发展的关系等等。(普及组为20道单选题,提高组为10道单选题和10道不定项选择题,不定项选择题与答案完全一致才得分,多选或少选均不得分)
2、问题求解题:共2题,每题5分,共10分。试题给出一个叙述较为简单的问题,要求学生对问题进行分析,找到一个合适的算法,并推算出问题的解。答案以字符串方式给出,考生给出的答案与标准答案的字符串相同,则得分;否则不得分。
3、程序阅读理解题:共4题,每题8分,共32分。题目给出一段程序(没有关于程序功能的说明),有时也会给出程序的输入,要求考生通过阅读理解该段程序给出程序的输出。输出以字符串的形式给出,如果与标准答案一致,则得分;否则不得分。
4、程序完善题:共2题,第一题10分,共4空,每空2.5分;第二题18分,共6空,每空3分。两题共28分。题目给出一段关于程序功能的文字说明,然后给出一段程序代码,在代码中略去了若干个语句并在这些位置给出空格,要求考生根据程序的功能说明和代码的上下文,填出被略去的语句。填对的,则得分;否则不得分。
复赛:考前准备
草稿纸考试一般会发放,比较大,需要你带一、两支笔。应该可以带水,但是别喝多了,貌似上厕所比较麻烦。考试这几天就不要再学习新的东西了,时间不够,学也学不精,反而是浪费时间。
建议自主复习一下旧的知识,比如字符串处理、快速排序这样的知识。头天晚上不要嗨到太晚(熬夜打DOTA、窜宿舍泡妹纸什么的...),早点睡。
第二天大概6点左右就起床吧,剩下的时间根据需要调配,早饭、午饭大概8成饱就足够了,考试前记得上个大号- -哦对了,参赛证千万别丢了!建议快考试的时候再挂到脖子上(我们这有个仁兄把准考证弄丢了- -最后怎么解决的不知道),平时别拿出来显摆。
还有就是一般住宿的学校会给你学校的平面图,考场在哪、食堂在哪、宿舍在哪一定研究明白了,别找不到地方就蛋疼了...
比赛提前30分钟进场,熟悉考场环境,找到自己座位及厕所位置,更改软件、系统为自己所喜欢的设置,如:取消桌面背景、更改屏幕分辨率、更改虚拟内存等。利用熟悉考场时间写下重要且易错内容,如:快速排序(Qsort)、文件操作命令等。
试题解压密码会影响一个人的心情,一定要一次输对,注意大小写,不要边输入边检查,要对自己有自信。禁止携带U 盘、MP3、计算器、手机等任何与存储、计算、通信有关的电子设备;禁止携带一切书籍和其他无关物品;一经发现按作弊处理。
还有,考前一定要看《骗分导论》!!!(注:这么误导小朋友不好吧!)
在Oier中,有一句话广为流传:任何蒟蒻必须经过大量的刷题练习才能成为大牛乃至于神牛。这就是著名的lzn定理。然而,我们这些蒟蒻们,没有经过那么多历练,却要和大牛们同场竞技,我们该怎么以弱胜强呢?答案就是:骗分。那么,骗分是什么呢?骗分就是用简单的程序(比标准算法简单很多,保证蒟蒻能轻松搞定的程序),尽可能多得骗取分数。骗分是蒟蒻的有力武器,可以在比赛中骗得大量分数。但是,最后我还是要说一句:不骗分,是骗分的最高境界。
黎大猪:
利益相关:当年noip拿过全国一等,13年高中毕业,自招到某985,现在刚毕业入职某司嵌入式开发岗。答这题应该挺适合的。
准备noip总结可以分三段:
1、noip主要学的是算法,与单片机和嵌入式关系不大,推荐去学c++(好像noip说即将要取消c语言了?),c primer plus或者c++ primer plus都挺好的,虽然说那个谭浩强的什么老是被吐槽,但是作为入门还是挺好的,语法这些不需要深究最重要是会用,能描述出你想表达的算法,若是时间紧也可以在学习算法中巩固语法的知识,我看你说看了一半c primer应该也差不多了。
2、然后就要学一些算法知识了,我那时主要的算法有:数学递推、回溯、贪心、分治、搜索、动态规划、树、图论,我那时候是有老师教的,大学时看《数据结构与算法分析》感觉也基本覆盖到了,这方面应该挺多书的很好找。
@BillXu2000
推荐的那本《算法竞赛入门经典》看了一下挺好的。
3、最后就是多刷题了,多看人家的解题报告,等到了一定境界后就会发现其实来来去去就那几种题。我记得到高三我那个专门放代码的文件夹已经有几百M了,各种题库,那时候时北大的那个oj挺出名的,还有各种模拟题,时间一定要掐好,我那个时候是3小时4题,(现在好像又改了)。