分享

信息学奥赛NOIP普及组备战攻略 | 奥林编程,在线青少儿编程

 张洪亮1986 2019-08-15

8月1日《NOIP普及组备战讲座》已结束,昨天的讲座奥林君为您整理了文字版,来看看今年备考要掌握哪些重点。

考前须知

NOIP 2018年获奖情况

由于国家人工智能战略和各高校的优惠政策,自主招生向信息学奥赛靠拢的趋势,信息学奥赛历年的报名人数呈30%的递增趋势。

2018年初赛参赛人数是55851人,筛选后进入复赛有11909人进入复赛后,总获奖率高达到72%,其中一等奖22%二等奖46%三等奖5.2%。

实际初赛的难度不高,但通过率仅为1/4。一方面原因是筛选掉的学生多是0基础型选手,另外CCF官方对比赛的规模、组织、成本控制也有考量,比如以往考试场地对计算机的容纳数量是巨大的挑战,预计今年场地问题会被优化,初赛进入复赛的比例会有所增加

NOIP省赛的特点注定了省间差异十分大,省赛参赛人数(普及组+提高组)超过5000的省份只有8个,分别是山东、四川、江苏、安徽、浙江、福建、广东、河北,而普及组的总参赛人数是5W多,平均下来某些省份的参赛人数在2000左右,甚至几百人,对考生来说竞争环境良好。

对信息学竞赛赛程赛制有疑问可以回看往期全面解读C++信息学奥赛,家长必读

题型分析

我们统计了2000-2018年所有复赛程序编写的76道考题后,从普及组20大门类问题中整理出了8种常见题型

1. 枚举。枚举是编程最简单朴素的算法,可以理解为穷举或搜索算法,也是典型的拿分题。

2. 简单动态规划

3. 数学、数论。比如质数、素数、汉诺塔、数列,这些数学知识在编程里需要用程序的方式表现,而这些数学知识相对奥数难度低了很多;

4. 排序。在十大排序算法中其中又以快速排序、冒泡、堆排序最为常见;

5. 模拟。当无法规则化解题时可以用模拟算法尝试;

6. 字符串。编程常用类型,规范性强,是历年出题的抢手题,也是拿分题,有时字符串会和其他问题结合在一起出现;

7. 搜索。从简单搜索到深度搜索各种类型都有出现;

8. 贪心算法。例如历史上的排座椅、纪念品问题。

其他如图论、背包问题、数论、分支都是偏向提高组的题型,在普及组是低频题、拉分题。

按5星最难,1星最简单作程度分类,常见8种题型难度都是在1~3星,搞定这些题目可以达到普及组二等奖的水准;一等奖水准对应的是大部分4星难度能掌握,个别5星问题能攻克;

NOIP长期备战四个策略

▶ DO or NOT DO

 C++语言很强大,但坑多藏得又深,比如循环越界,考生自己难以发现,在写入操作中循环越界会影响后续变量值,因此要熟练掌握C++规则和模型,既要懂做什么,也要懂不要做什么;

 练习

◆大量做题练习,培养“码 感”,熟练套路;

◆针对具体要做多少道题,这里给出一个 量化参考 ,考生可以根据自己的情况规划练习频率,比如一周10道题的练习积累,一年可以冲刺普及组一等奖;也可以依此判断准备时间, 比如对于大部分强省考生,提高组冲奖需要准备2年的时间

▶ 掌握算法,熟练数据结构

数据结构就是清楚数据的输入、存储、变换、输出整个流向。这里引用一个公式“ 编程 = 算法+数据结构 ”。算法和数据结构是编程的一体两面这点是技术界的共识,然而信息奥赛历史过于强调算法导致部分考生容易 偏颇的理解这两者,忽略数据结构的重要性。

▶  建立 “库存优势!“

这里的“库存”指可以拿来即用的“编程库”。 掌握 STL(标准库) ,特别是vector、string、list、stack、queue、 map、 set 、 tree 等常用数据结构和 algorithm 中的常用算法可以大大提升效率。

临考四大方针

▶ 花时间审题,选择对自己最简单的题目。题目不一定是按照难易程度排列的。

▶ 选中优先做的题后,不要急着写代码,先勾划一下算法流程+数据结构

▶ 对于约束、边界条件,可以先不考虑,不要让这些拦住算法的整体思维

▶ 不钻牛角尖,如果某一种方法不work,跳出思维,换一种方式。

 不会的题目,特殊的边界,最后阶段暴力解决(朴素算法)“骗分”,即获得朴素分。“骗分”,其实是非完美算法(NOIP判题策略是机器输入10组左右数据检验工作) 。暴力也有含金量!

避免低级错误

 未包含头文件—— 编译检查自己的头文件!

 Linux 和 Win有区别——使用万能头文件 #include<bits/stdc++.h> 注意”/“方向

 主函数没有 return 0 —— 写算法前先写好return 0!

 未按规范写文件名,未使用文件输入输出——写算法前先写好输入输出

 数值溢出,浮点精度丢失——尽量使用存储空间大的类型。

 数组内存不够、越界——熟练数组!

 字符串、字符、8位、16位、大小写 搞混淆——熟练字符串!

 注意空间和时间复杂度限制!—— 掌握复杂度判断!

NOIP十问十答

 刚刚开始学习,能够打2019年信息学奥赛吗?

可以,但不要对一等奖抱有幻想,目标设置到三等奖或二等奖,对于10月份的初赛,需要规划每周3-6小时的学习时间以及每周精练10道题

 语言选择如何?选择C语言是不是简单点?

C语言和PASCAL目前仍是NOIP考试可使用的语言,但从2022年开始,NOIP竞赛也将不再支持Pascal语言和C语言,C++将成为唯一推荐使用语言。C语言虽然相对简单,但不使用C++是一个巨大的损失。首先使用 其他语言,STL标准库里很多拿来即用的函数无法使用,另外C语言过于老套,比如C语言没有string这个类型,而用字符数组或字符指针代替,复杂性大大增加,在C++里面写字符串比在C语言里简单很多。

 如何报名信息学奥赛?

初赛一般都是以学校为单位通过指导教师报名(每年9月份开始报名)。若学校因故不能统一报名,家长可直接联系特特派员报名(各省特派员联系方式见http://www./newsview.html?id=81&hash=C6F26A&type=9),由省特派员在报名截止日期前统一提交至中国计算机学会(CCF)。NOIP初赛时间是每年10月份,复赛为每年11月份。通过NOIP初赛的考生可以在10月末报名复赛。另外也可选择通过我们机构代报名

初赛基础知识如何学习

初赛的基础知识比如常见逻辑、二进制等等,我们会在课程中穿插讲解,对于0基础的学生,初赛的基础知识在比赛前突击一两周即可掌握

 既然做题很重要,如何科学刷题?

科学刷题要做到三点:a.做题要有反馈。对哪里出错,哪里已掌握要有明确认知。b.做题要包含独立思考过程,不能照本宣科。c.对常见题型要有一定覆盖量(详见”题型分析部分“)

▶ 对自学和报班分别有什么建议?

自学要科学,要有规划有反馈,资源和题目的把握是对自学的很大考验,而报班级学习就节省了很多时间。

 听说可以骗分,老师教我怎么骗分!

”骗分“实际是指朴素算法,而朴素算法是编程的基本素养。真正能写出好的”骗分“的都是高手。

 信息学奥赛什么时候开始学?有什么学习规划?

 临考前怎么突击提高?

练习时在8大类高频题上多花时间,有难度的题型比如动态规划可以适当放过。

 我能获奖吗?有什么秘诀?(★★★)

由于时间已经临近比赛了,这个时间冲刺获奖的可能性是要因人而异的,这里奥林为冲刺今年NOIP的考生送上限量福利——赛前真人测评,在一个小时的时间里通过题目测试+导师1V1问答互动判断考生水平,题目涵盖初赛复赛所有题型范围,并给出考生能力水平报告报名方法如下

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多