比赛注意事项

Posted by Panda2134's Blog on July 10, 2018
  • 找最大值的时候用 $\ge$ 而非 > !尤其是要确定最大值的位置的时候!(fst*1)
  • 交代码之前一定要检查:
    • 文件名
    • 部分分对应关系(包括数组!)(因为这个爆掉部分分)
    • 内存占用(windows也可以使用MinGW中的size!)(因为这个爆0一次)
  • 认真用 5min 读题+划重点,尤其是CodeForces的英语题面! 把重点写在草稿纸上!包括但不限于:
    • 多解的处理 ?
    • 最大化 / 最小化 ?
    • 重复元素处理
    • 样例解释?
  • 正式比赛中绝不能随机开题!不然最后时间都是乱的,后果很严重!
  • 一般开题顺序
    • 网络流 ( $n \le 50 / 100 / 200$ )
    • 图论
    • 较为显然的DP
    • 感觉好像可以做但是思路不清楚的题(这种最危险,很可能写几个小时候发现是假算法!)
  • 爬山 / 模拟退火,答案状态和当前状态一定要清晰分开!每次先拷贝一份答案状态并加以修改,再看能否替换答案状态!最后只能输出答案状态!为了避免混淆可以叫做 (Tans,ans), (Tnxt,nxt) 等等。
  • 纸上写 DP 方程时使用 $i, j, k$ 而非 $n, m, \text{etc.}$
  • 滚动数组只能滚一维,否则会交叉!
  • 如果费用流中没有负权边,就可以大胆地删除原始对偶中的第一步 SPFA ,全过程都使用 Dijkstra !这样有利而无害,还可以预防被卡!
  • 如果要判断无解,就一定要在发现无解的时候立刻退出!!!
    • ❎❎❎ #define FAIL() puts("-1")
    • #define FAIL() do{puts("-1"); exit(0);} while(0)

考试时间如何安排

  • 首先用整整半小时阅读题目,卡准一个题10min,这个阶段可以弄清题意,大概估计难度,还可以略加转化(但是不能在一个题花费太久)。原题也可以在这一阶段识别。
  • 用1h打所有题最低档暴力。按照这几年NOI命题趋势,给出一整道送分题不大可能,所以打满暴力一般就有70-100分了,相当于做了一道题。如果看出了原题,再用20min加以确认,然后可以先写(小心误判,这时果断扔掉)。
  • 用2h解决认为最简单的一个题,但是要注意,如果思路不清晰,马上换题。如果都不好写,就找一个会高分部分分的题目。
  • 用45min写中档题的部分分。一般可以放弃最难的题目。如果最难的题目部分分可以做的话,用剩下的时间写。否则可以考虑想想中档题正解。
  • 最后10min检查文件名。不要随便改代码。 这样的话理想情况得分在160左右,按照去年NOI的话是前100名。