NOI 赛制的特点:
- 难题简单题分数一致
- 部分分充足
- 没有反馈(指双向的,我们不知道代码结果,出题人也不知道我们怎么做)
针对 NOI 赛制的特点,总结了考试策略
拿到题目首先浏览所有题目,根据经验判断题目难度决定开题顺序,由易到难,一般题目难度单调递增。
题面要至少看两遍,认真审题,确保不会理解错题意(要不然打完发现fake了就寄了),输入输出格式搞清楚。看部分分和数据范围,估计正解时间复杂度、算法和代码实现难度。最好选自己最稳的题目开始。
接着快速联想思考,判断难度,多想想有关的技巧,预计10min。如果后面没有什么思路,就瞄准部分分打暴力特殊性质拼盘,特殊性质有时是正解的切入点。有时候想到了一个假的但是看上去很对的贪心也可以考虑拼盘,总司令,万一 CCF 没有 hack 到你就赚大了。
多考虑边界情况。比如手造链,菊花,网格图等。找规律题打表。
想好后全神贯注写代码。一边想一边写很容易就出现错误,后面查错对拍又耗费大量时间。大模拟细节多要理清楚框架。
别沉浸在正解的世界无法自拔,给自己分配好时间,超时了就果断打暴力/下一题。根据本人经验,死磕一道题通常是想不出的,不如先骗到后面分。
重视检查。代码写完后可以先静态查错,看自己变量有没有搞错,有没有取模,最值变量初值,主席树有没有开够空间,变量数组有没有初始化,重复使用的变量要清空,多测清空,不开longlong见祖宗。在 devc++ 编译选项开 -std=c++14 -O2 -Wall
,可以避免大多数 RE(调试时把O2关掉)。过了大样例要对拍(大样例很水),如果时间充裕,就想方设法 hack 自己(一般是T1,后面都不会正解),造极限数据,极端数据,手造小样例等,根据自己代码想的不是很明的地方造hack。注意文件名,比赛结束前 5min 去检查文件,运行 checker。
保持良好心态,休息要好。一个好心态和清晰的大脑可以让人充满自信,精气神饱满,做什么都顺。如果题目很久没有拿下,可以上个厕所调整状态。
总之一切都以得分为中心。只要骗的分多,即使没有A题成绩也十分可观。简单题确保拿下,难题想方设法骗分,已经足够了。
NOIP T1 一般可做,如果能拿下,就要花多点时间检查,100pts挂不起。后面的题先打暴力,然后骗部分分,如果想了正解还能对拍。要重视检查。