OI 考场宝典
流程
freopen
freopen("***.in", "r", stdin);
freopen("***.out", "w", stdout);
OI 赛制中通常需要使用文件输入输出,在调试时为了方便总是要将其注释,但千万不要在提交时将其注释。
IDE 配置
-Wl,--stack=0x20000000
-std,-O2=c++14
开启常见错误的警告,将栈空间设为 500MB, 开启 O2 优化,使用 C++14 编辑语言。
策略 / 技巧
注意时间安排
把所有题都读完,都写完暴力再想正解。
不要死磕一道题
不会就写暴力,OI 赛制中应以拿分为第一目的。
写不出正解的题目就敲暴力,在
画图 / 手推 / 找规律
没有头绪时可以尝试。
图论
图论类型的题目数据都十分难出,可以使用错误但看上去很对的算法或思路骗分,分数十分可观。
贪心
普及组的贪心一般思想都很简单,如果看上去很正确并且没有造出 hack 便可以直接开写,如果大样例过了基本上就稳了,但还要注意细节。
ios
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
关闭输入输出。流对于输入输出量大的题目可以提快速度。
但关了之后就不能使用 C 语言输入输出。
卡常
-
多使用位运算;
-
如果需要取摸,且参与运算两数均不大于 MOD 可以使用减法代替;
-
不必要少使用 STL 数据结构;
造数据
多造极端数据 hack 自己思路和代码。
输出调试法
如果代码被数据 hack,可以在运行时输出代码中变量或数组来调试。
逐字符调试
对拍
如果对自己的程序没有自信,可以再写一份暴力,再投入相同输入并看输出是否相同。
骗分
仅对于连暴力都不会的题目。
无解
直接输出无解情况骗分,特别是无解情况较多的题目。
随机数
单解题目可以直接使用 rand() 。
打表
如果数据范围较小,可以提前算好答案,再用数组存好,运行时直接输出。
检查要点
long long
不开 long long 见祖宗
但同时也要注意内存超限。
输出调试
提交时一定要删。
数据范围
多测清空
函数返回值
所有函数必须要有 return,包括 void 类型函数
长整型位运算
1ll << x
1ll >> x
1ll & x
1ll | x

浙公网安备 33010602011771号