心态
①还是心态最重要。我要想到如果我一时半会儿想不到正解,是很正常的,先去想暴力分,将能拿的分拿到再说。不要想别人怎么样。
②对于可能的最难的题目,不要死磕,也不要慌,马上将能拿的分拿了,做后面的题,然后返回来想。
③对于可能有突破口的题目,尝试寻找突破口,比如1D1D的DP。
④还有一个就是,如果知道这档部分分拿不了,就随便乱猜个可靠的结论,说不定能水到分。
⑤为了找到大众题: 抛弃掉“第一题最简单,可切”的思想,哪题简单先(想)打哪题。
策略
①想清想楚才去考虑另一题。对题目难度的估计很重要,像这种难度不要思考太久。
②对于有些需要通过数据才能够发现方法的题目,将思考它的时间推后,边打题边思考。将宝贵的时间让给后面两题。
③关于序列的暴力怎么打才能够保证正确性?在递归中,把原序列暴力地构造出来,不要投机取巧。
④时间:⑴如果发现时间不够,先将难题的暴力打了再去调稍微简单的那题。
⑵前两题尽快打完,避免出现可以得分的暴力因为小错误或者没时间打而没分的情况。
对拍
①珍惜能够手推的数据。
②对拍时花多些时间,出多些合理的数据。
③还有多于十几分钟的时间,立马对拍,不管打不打得完马上这么做,因为只能这么做。
④对于构造题要勇于手出小数据发现某些规律。(可能有显然结论)
⑤另外,要使对拍拍出错误,就不要100%随机,比如说强制改树的高度。
知识及注意事项
①搜索:迭代加深,估价函数,某些强大的剪枝。
②概率与期望:
概率:
f[i]=Σ(f[j]∗p[i][j])
→正推
期望:
E[i]=Σ((E[j]+k)∗p[i][j])
→逆推
③数论:小数%大数=小数。
④哈希:树形hash体现了树的形态,所以树形hash可以用来判断同构树。
哈希的模数尽量大,不然小心被卡。
⑤博弈:一定要心狠,让游戏尽快结束,从而得到显然的结论(可能性比较大)。
⑥人工栈:
dfs
人工栈有时候可以换成
bfs
,但是
bfs
不能完全代替人工栈。如果题目中能使用
bfs
,可以用
bfs
从叶节点推到根。
⑦牢记tarjan是用来求强连通分量的,不管里面有几个环,都可以缩成一块。缩点的时候重新建个图,把被删掉的点x本来连着的点与x所在的环的标记点连起来。
吼
NOIP 2017,I AM COMING!!!!