分享

新手想参加信息学竞赛NOIP ,如何入门进阶?

 长沙7喜 2018-04-30

编玩边学

教育理念和养育方式


现在越来越多的家长开始让孩子学习编程,编程除了可以极大地提高孩子的逻辑思维能力以外,其相关赛事奖项对升学的重大影响也是编程引起越来越多家长关注的重要原因。

 

比如,孩子学习编程后,如果参加信息学相关的竞赛(NOIP和NOI)获得优异成绩,很容易得到高校自主招生的面试资格、降分录取甚至免试保送。

 

因此越来越多的家长都在后台询问“新手如何入门学习准备NOIP比赛”,今天玩妹请来编玩边学资深的NOIP课程老师伍老师来为大家解答这个问题。


注:全国青少年信息学奥林匹克联赛,National Olympiad in Informatics in Provinces,简称NOIP。


自我介绍:


大家好,我是伍老师,现在担任编玩边学的NOIP算法课程教师。


我是通过自主招生,进入了985大学。曾参与全球大学生程序设计竞赛ACM-ICPC亚洲区域赛6次,收获了2银3铜,也曾获省级赛一等奖2次。竞赛实战经验相对比较丰富。


今天很高兴来给大家解答相关NOIP 的一些问题。

 

01 

关于NOIP

 

我整理了一些关于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++还是先学习其他语言打基础比较好?

 

答:像我刚才说的,如果是小学开始,一般建议增加一部分:编程入门。


0基础的孩子,如果年龄比较小(11岁以下),建议先学习Scratch。


Scratch是可视化图形编程语言,使用者可以不认识英文单词,也可以不会使用键盘。


其构成程序的命令和参数是积木形状的模块,不用书写代码语句,只需按照一定的逻辑用鼠标拖动模块把它们拼在一起就可以。 


 

Scratch编程


 Scratch对于孩子编程思维的培养大有裨益,可以为下一步C++和Python的学习打下基础。


如果孩子年龄稍微大一点,已经是中学生了,建议直接上手C++语言就行。


02

备赛小技巧(建议收藏)


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

 

首先是入门阶段。


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



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

 

再就是进阶阶段。


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



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


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

  

今天就给大家分享这么多,如果大家有疑问,可以在留言区留言给我,谢谢大家。

 



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多