NOIP考场注意事项

· · 个人记录

注意Frc,文件名,大小写

freopen(".in","r",stdin);

freopen(".out","w",stdout);

  1. 编译选项加 -Wall ,防止 UB

  2. 不要在代码中使用 #pragma ,如果忘删就寄了

  3. 变量名不要用保留字(如果头文件用 bits/stdc++.h 也不要用 y1 之类的),数组大小要算好

  4. 尽量所有变量开 long long ,防止溢出

  5. 中间过程也要取模

  6. STL容器在操作前,一定要先判断是否为空,不然 RE

  7. lower_bound 和 upper_bound 没查找到时会返回尾迭代器,用 * 解引用之前要先判断,不然会 RE 或 WA

  8. double 有玄学精度问题,有条件时尽量用 long long

    比如比较 a/c 和 b/d 时,可以比较 a*d 和 b*c

  9. 注意优先级,不确定的都加括号

  10. 减少宏定义的使用,可以用 const 代替

  11. 只有全局变量初始才为零,局部变量记得要初始化

  12. 结构体数组不能在定义里赋初值,本地能过,交上去会 CE

  13. 有返回值的函数一定要写返回值,不然 RE

  14. 多测不清空,爆零两行泪

  15. 不建议使用未关闭同步流的 cin cout (关闭同步流后不要混用 cin cout 和 scanf printf )

  16. 注意 Linux 下多一个换行符, getchar()要注意不要读到换行符

  17. sort unique lower_bound upper_bound next_permutation 等 STL 函数的范围是 [ begin , end ) ,不包括尾指针

  18. 下标建议从 1 开始,如果从 0 开始,记得判是否越界

  19. 线段树记得 4 倍空间

  20. 代码要可持久化,每个版本都要存

  21. 调试完记得改 freopen

  22. 题不会时,跳过或者先打暴力、模拟、贪心等朴素算法,不要死磕

  23. 复杂度正确时,也要考虑常数是否过大

  24. 如果除数可能为 0 ,要先判断

  25. 模拟退火降温 0.996

  26. 卡时不能卡太满, 0.95 左右即可

    (double)clock()/CLOCKS_PER_SEC<=0.95
  27. 实在不会时,一定要骗分(想想“不可以,总司令”有 45 pts )

  28. INF 要够大, INT_MAX 不一定够

  29. 防止各种低级错误

    典型:

    for(int j=0;j<=n;j*=2)
    for(int j=1;j<=n;i++)
  30. 关于 SPFA ,它死了

  31. 注意格式,该换行还是该空格

  32. 如果对自己的正解没有信心,可以试试数据分治(在小数据时使用暴力)

  33. 不要在代码里写暴戾语言(禁一警告)

  34. 最后 10 min 不要做题,检查一遍

  35. size() 的返回值是无符号整形,减 1 会出事

  36. 浮点数运算要加 eps

  37. 调试时尽量使用文件输入输出,有时控制台和文件的输出会不一样

  38. 记得删除调试代码

  39. 不要放弃假做法,有时假做法还能拿到一半分(虽然可能连样例都过不去)

  40. 能过样例和大样例的代码,不一定是完全正确的,要多对拍几次

最后

\huge{NOIP2022}.^{{rp++_{luck++_{luck++}^{luck++^{luck++^{luck++^{luck++^{luck++^{luck++}}}}}}}^{{rp++^{rp++{^{rp++^{rp++^{rp++^{rp++^{rp++^{rp++^{rp++^{rp++^{rp++^{rp++^{rp++^{rp++^{rp++^{rp++^{rp++^{rp++^{rp++}}}}}}}}}}}}}}}}}}}}}}}_{score++_{score++_{score++_{score++_{score++_{score++_{score++_{score++_{score++_{score++_{score++_{score++_{score++}}}}}}}}}}}}}