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 语言输入输出。

卡常

  1. 多使用位运算;

  2. 如果需要取摸,且参与运算两数均不大于 MOD 可以使用减法代替;

  3. 不必要少使用 STL 数据结构;

造数据

多造极端数据 hack 自己思路和代码。

输出调试法

如果代码被数据 hack,可以在运行时输出代码中变量或数组来调试。

逐字符调试

对拍

如果对自己的程序没有自信,可以再写一份暴力,再投入相同输入并看输出是否相同。

骗分

仅对于连暴力都不会的题目。

无解

直接输出无解情况骗分,特别是无解情况较多的题目。

随机数

单解题目可以直接使用 rand()

打表

如果数据范围较小,可以提前算好答案,再用数组存好,运行时直接输出。

检查要点

long long

不开 long long 见祖宗

但同时也要注意内存超限。

输出调试

提交时一定要删。

数据范围

多测清空

函数返回值

所有函数必须要有 return,包括 void 类型函数

长整型位运算

1ll << x

1ll >> x

1ll & x

1ll | x

posted @ 2025-03-15 17:30  oymz  阅读(95)  评论(1)    收藏  举报