考前须知
NOIP普及组比赛日程和题型
?初赛:每年10月份第二个周末 14:30-16:00
题型:选择题,问题求解,程序填空、程序结果运算
?复赛:每年11月份第二个周六 14:30-18:00
题型:编写程序(共 4道题)
题型分析
我们统计了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 中的常用算法可以大大提升效率。