考前:思维码力两手抓,算法用三天复习。
进考场前看个题把思维启动一下。(待验证)
题目绝对不能读错。
暴力枚举、网络流、拆平方……暴力的想法不能一味否定。
不能稍微想一下就认为一个算法没前途。面对不足要去解决,而不是沉沦下去。发现结论可能假了要验证,既不能即刻否定,也不能盲目相信。
凭直觉想到一个算法固然是好的,只有深究其性质,才能画龙点睛。
时间要充分,先想做法后写代码,验证做法要写代码。
不要盲目相信部分分。只要不是正解,就要做好改的准备,做法可以先写下来,防止想了一步想不到下一步。
注意题目中的细节,不放过每一个做法。
做题一方从题意推出去,一方从做法推回来。枚举做法有时候很可行。(哈希、分治、分块、根号、DP、bitset、倍增)
一个对象想不通,考虑它相对的。
推式子,组合意义立大功。
可以猜看着假,实际真的结论。猜必要条件然后证成充要。
一类问题要掌握多种做法,以多样性多样化取胜。
不要懒得在纸上写式子。还有画路径。
不要边写代码边想。写之前多想想会更好写。因为先写的暴力都可能是假的。
发现一个算法不可能再优化时要换思路。
代码实现:不要懒得写代码,该建图的建图,该写 vis 就写 vis,代码要认真写好,不出问题,检查不仅仅是 freopen,还是时间、空间、答案正确性(包括对拍)等的全面检查。数组能开多大开多大,输出完 -1 一定要退出,线段树一定要写边界判断。初值要注意设好,最好都取极端值。认真对拍,对拍是查错最快的(确信),对拍不是一定要写暴力。较优的就是较正确的。能写简单的就不要写复杂的。不要重复写同一个,可以写一个 auto const&
。变量名可以在必要情况下缩写。若没有缩写,vim 下用 Ctrl-N 自动补全。改代码之前好好想想会不会出问题。
数据结构卡常数记得换维。不要迷信 gp_hash_table 的速度。
关注 corner case,对拍没用时要关注:爆 int
的 long long
不一定能解决,可能开 __int128
;取模可能出负数;数组可能开小;复杂度可能假。
发现做法太难写,不如返璞归真。
不要弃赛,有一定趋势时要调整回来,想赢就会输。千万不要嫌自己得的分太多。要有斗志。
代码一定要有测试。一定要测极限数据,测的时候一定要开 fsanitize。一定要对拍。不要对自己的正确性太自信。
做一题超过一小时是不正常的,除非是写代码。不要频繁换题。记得看时间!该打暴力就打!遇到难写的题,后面还有题没想,最好去想一下。