信息学奥赛一本通pdf_新手如何参加信息学竞赛NOIP,怎么入门(常见问题解答)?...

*文整理自知乎、贴吧等网络资源,版权归原作者所有。

1

新手学信息学竞赛如何入门,知乎上有一个话题讨论,我们也引用一些比较优质的回答给各位同学和家长一些参考,结合一些常见学习问题作出总结。

Q

高一新生如何准备信息竞赛?

答1:下面七点按难度从低到高排序:

1.跟着学校的步伐。关注任何动态。

2.买台笔记本。

3.自己注册一个博客,或者开一个笔记账户。

4.买一些书如《算法竞赛入门》《算法导论》并认真刷。

5.放弃自己的休息时间。

6.接受成绩的下滑和自己天分的不足。

7.准备好一颗懂得放弃,也懂得不放弃的心。(石政宇)

答2:

客观的前提条件:数学成绩要好些

主观的前提条件

  • 能够放弃自己的休息时间(有可能还要挤掉晚修),并且应对成绩下滑时老师、家长的责难;
  • 接受「信息学竞赛是个高风险投资」的事实;
  • 接受「自己真蠢(天分不足)」「总有人比自己小,还比自己强」的事实;

如果不满足前提条件不是不能搞信息学竞赛,只是会很难进复赛,更不用说拿奖。

答3:买一些书自学吧!刚开始学就是刘汝佳的紫书和蓝书,算法导论,信息学竞赛数学一本通什么的。

还有就是做题,多刷题!!!

答4:

这里是快退役的高二oier,我们学校去年才开重视竞赛,我个人也走了许多的弯路。开始学习的话建议从啊哈算法入门,先培养兴趣,这本书极其通俗易懂。看完之后可以刷一下普及组的试题。接下来可以看算法竞赛进阶指南(这是一本好书),把后面的题做完就差不多noip400+了。如果是弱校的话(并且在强省)不太建议冲刺省队,拿个省一就差不多了。oi路上最重要的是坚持,千万不要像我一样颓废。(circlestar回答)

其他:

参加NOIP,首先要学的是C++。

当然C++只是基础,信息学竞赛的核心是算法和数据结构,需要选手分析问题,并通过算法和数据结构大大提升程序效率。小学生学习的话建议先进行一下变成入门学习。

Q

初中生学信息学竞赛应该参考哪些教材,从哪些方面开始努力?

答1:(作者:heheheheehhejie)

以一个oier的身份说说我的人生经验,

如果只是为了拿奖而学的的话,主要心思还是得在正常学习上。

如果是短时间的兴趣的话,只用一点周末学习吧,不会占用你太多时间,普及组的内容还是挺有趣的。

但如果你对oi具有热情,希望成为那些神犇一样的oi高手,那就需要长时间的投入了(也有可能因此成绩下滑)。大部分在oi有名气的人都会长时间的停课集训,这可能对你来说还太早(毕竟你还在纠结要不要学)。

如果决定要学,就要趁着还早,空闲时间还够,多打下基础。oi也是需要数学基础的,所以文化课也不能落下太多。

总之 oi的水很深 进去了就很难出来了。

初学者建议看看 信息学竞赛一本通 或者是刘汝佳的算法竞赛入门指南

答2:(作者:Yukari)

首先是

1.家长支持(至少不反对)

2.班主任不反对(或者最好在理科实验班)

个人智力水平不提(您肯定很强)

参加OI心态很重要呀,

要想清楚是不是真的喜欢 三分钟热度可不行呐

有抗挫折的能力 如果因为头部文件漏写省一降0分会退役吗(我就这样子辣现在想想还好当初没退啊)

要有信心啊 既不要为自己是女生而自卑(,也不要因自己是女生而自豪QAQ)相信自己是很重要的啦

不要分心 不能专注很容易日渐颓废啊(比如我QAQ)

能力方面,数学要好 tg数论题有哒

如果是这样像您这样pj省一肯定没什么问题,开始是不需要太大天赋的

我觉得其实是否在外面上课并不是很重要的因素。因为对于很多人来说自学效果往往会更好。

不管您是否上课,学OI都需要

很多好书来引导(推荐刘汝佳的几本,不介意可以再看一本通系列,《算法导论》,《Effective C++》,《C++的设计与演化》)

一个好的OJ

有人交流 不管是线上还是线下

多做有质量的题,最好是独立做题嗯~

有一句话在学OI时给了我很大鼓励:

>自己选的路,别说爬完了,死也要死在这条路上.

一起加油吧~

答3:(作者:张瑯小强)

我是gd高三学生,高一进入信息队,高二拿到noip提高组一等奖。

入队前有一定编程基础。

能够经常上机。

我主要自学。

我使用刘汝佳《算法竞赛入门经典 第二版》和(掌握第一本后)《算法竞赛入门经典 训练指南》自学,大半年后达到和初一进队的人的水平。

这两本书是我觉得最适合oi选手的两本书。

一本通的很多代码和刘汝佳的书雷同。

总之,自学是可以的。

同时你也不要贪快。

要找个oi学长学姐带你。

答4:(作者:唯虚集道)

主要的其实dalao们都给你说得差不多了,我就随便瞎谈点儿别的吧。

我当初也是先自学的C#,但C#的编程和OI的编程差别还是挺大的其实。所以千万不要以为“对C#感兴趣”就相当于“对信息学竞赛很感兴趣”。

我个人的建议就是,先找本刘汝佳的紫书,照着上面的先学一段时间。当你把基本的语法(至少八皇后能独立写出来)都学得差不多了,学到一些基本的数据结构的时候,再看看你是不是真的对OI感兴趣。

至于现在参加竞赛会不会晚之类的问题,现在都统统不要考虑。如果你对这个真的有热情、有天赋,还肯下功夫的话,国际金牌都不一定啊。泥看,高一搞oi最后签约清北的也不在少数啊。

欸对了,如果你觉得自己真的对这个很感兴趣的话,我当初花了一千多买了计蒜客的信竞的课,你要想要的话我可以把账号共享给你。

希望能够对你有些帮助吧。加油!

2

Q

参加信息学竞赛的好处?

答:NOIP取得好的成绩对参加名校的自主招生有一定的帮助。进入国家集训队的,可以直接保送清华北大。其他获奖选手可通过夏令营、冬令营、科学营、体验营等各种自主招生渠道争取到降20-60分甚至本一线的录取优惠。

清华大学、北京大学等重点高校每年都会于信息学同学进行签约,包括:无条件降至一本线录取、 有条件降至一本线录取、 有条件降 60 分、30 分等不同档次的降分优惠。

Q

几年级开始准备NOIP最好?

答:有的孩子小学就开始学习,或许可在小升初时享受到信息特长生优惠(根据当地政策而定)。

进入初中后,可争取初一拿普及组一等奖,初二开始可直接参加提高组竞赛,或许可在中考升学时享受优惠(根据当地政策而定)。这样高一就可以冲刺提高组一等奖,并且可以冲省队、冲国赛了。

其实,更多的孩子可能是从初一开始,进程和小学开始差不多,参赛也很从容。如果初中毕业才开始,那么节奏可能会有一点紧凑了。

备赛小技巧(建议收藏)

下面我分享一下我个人备赛过程中的自己觉得比较好的一些书籍、网站以及一些小的技巧。

首先是入门阶段

语言基础方面,首先要学习C++,但并不需要面向对象的知识,基本上是C和STL,C的部分可以看《啊哈!C语言》,C++和STL的部分可以看《算法竞赛入门经典(第2版)》的语言篇。

除此之外,可以多刷一些历年NOIP的题目,以及省选的题目。

以上需要大量投入时间,刷题的时候注意尽量刷“刚好能做出来”的题目,思考一段时间(比如一天)之后还没有头绪,或者程序一直调试不出来的话,可以看一下书上或者搜索一下网络上的资料,一般的题目都会有人在网上发题解,但是千万不要依赖题解,自己思考的过程才是最重要的。

除此之外,还要加强各类题目的训练。

再就是进阶阶段

对于有进阶需求的同学,建议大家可以详细看一下《算法竞赛入门经典(第2版)》以及《算法竞赛入门经典(训练指南)》,并尽量完成上面的练习题。

下文是NOIP吧吧友(账号:lm40015410)对个人NOIP 之旅的一个总结,主要针对初次参加NOIP的普及组新生。总结了教训,也参考了一部分神犇的资料,希望能给各位新生们一个参考。

王小宇:

首先声明,我是一个高一的OIer,有的东西只是自己的感受,大家不要太计较啦

我是从初一下学期开始学习的,现在也是将近三个整年了。

基础的东西一定不能忘,NOIP2015是我第一次参加NOIP,当时稀里糊涂的过了初赛,复赛之前掌握的东西真的很少,复赛前一天我才学到高精度计算。那时候用的是Pascal,学习数组的时候因为比较赶,所以没大练习,顶多是能比较基础地使用一维数组。结果,相信大家都记得,NOIP2015普及第二题,扫雷,需要开二维数组。当时我一看这道题就懵了,完全想不起来二维数组怎么开了,怎么调试也过不了,最后,普及二等。

其实,还是我太弱了,毕竟这么基础的东西怎么能忘掉呢。

NOIP2016的时候,初三,那时候数据结构只是学了点基础,但对于普及组来说也足够了。复赛的时候,可以说是基本没用到数据结构和算法,最多就是第三题用了一个桶排序,前两题全部暴力模拟,但是当时模拟打的比较稳,所以前两题AC。结果,NOIP2016普及一等。

所以说,最基本的暴力模拟也是一定要熟练的,毕竟很多时候正解是很难想出来的,这时如果你的暴力打的稳,并且优化的好的话,只要数据不是很大或者很坑,也是能拿到不少分的。

其实,归根结底,还是要努力学啊,如果你能把考点内容全都掌握的很熟练,那还用什么暴力模拟呢?随手一打那就是550+啊。如果心态好、精神充足的话,AK也是有可能哦。当然,那需要很扎实的知识基础和丰富的经验了。

还有,我觉得一个好的学习氛围是很重要的。如果你有很好的教练团队或者水平很高的同学的话,氛围肯定是不一样的。在这种氛围下,只要你能认真努力,我想就算想学不好也很难吧。

距离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题,(现在好像又改了)。

你可能感兴趣的:(信息学奥赛一本通pdf)