NOIP考场注意事项
注意Frc,文件名,大小写
freopen(".in","r",stdin);
freopen(".out","w",stdout);
-
编译选项加 -Wall ,防止 UB
-
不要在代码中使用 #pragma ,如果忘删就寄了
-
变量名不要用保留字(如果头文件用 bits/stdc++.h 也不要用 y1 之类的),数组大小要算好
-
尽量所有变量开 long long ,防止溢出
-
中间过程也要取模
-
STL容器在操作前,一定要先判断是否为空,不然 RE
-
lower_bound 和 upper_bound 没查找到时会返回尾迭代器,用 * 解引用之前要先判断,不然会 RE 或 WA
-
double 有玄学精度问题,有条件时尽量用 long long
比如比较 a/c 和 b/d 时,可以比较 a*d 和 b*c
-
注意优先级,不确定的都加括号
-
减少宏定义的使用,可以用 const 代替
-
只有全局变量初始才为零,局部变量记得要初始化
-
结构体数组不能在定义里赋初值,本地能过,交上去会 CE
-
有返回值的函数一定要写返回值,不然 RE
-
多测不清空,爆零两行泪
-
不建议使用未关闭同步流的 cin cout (关闭同步流后不要混用 cin cout 和 scanf printf )
-
注意 Linux 下多一个换行符, getchar()要注意不要读到换行符
-
sort unique lower_bound upper_bound next_permutation 等 STL 函数的范围是 [ begin , end ) ,不包括尾指针
-
下标建议从 1 开始,如果从 0 开始,记得判是否越界
-
线段树记得 4 倍空间
-
代码要可持久化,每个版本都要存
-
调试完记得改 freopen
-
题不会时,跳过或者先打暴力、模拟、贪心等朴素算法,不要死磕
-
复杂度正确时,也要考虑常数是否过大
-
如果除数可能为 0 ,要先判断
-
模拟退火降温 0.996
-
卡时不能卡太满, 0.95 左右即可
(double)clock()/CLOCKS_PER_SEC<=0.95 -
实在不会时,一定要骗分(想想“不可以,总司令”有 45 pts )
-
INF 要够大, INT_MAX 不一定够
-
防止各种低级错误
典型:
for(int j=0;j<=n;j*=2)for(int j=1;j<=n;i++) -
关于 SPFA ,它死了
-
注意格式,该换行还是该空格
-
如果对自己的正解没有信心,可以试试数据分治(在小数据时使用暴力)
-
不要在代码里写暴戾语言(禁一警告)
-
最后 10 min 不要做题,检查一遍
-
size() 的返回值是无符号整形,减 1 会出事
-
浮点数运算要加 eps
-
调试时尽量使用文件输入输出,有时控制台和文件的输出会不一样
-
记得删除调试代码
-
不要放弃假做法,有时假做法还能拿到一半分(虽然可能连样例都过不去)
-
能过样例和大样例的代码,不一定是完全正确的,要多对拍几次