总结

来源:互联网 发布:淘宝访客数是什么意思 编辑:程序博客网 时间:2024/06/07 04:00

这套题,在一年前作为NOIP介绍题做过。当时只得了第一题的一百分,第二题暴搜超时(当年还没有时间复杂度的概念,也没有学图论),第三题也不懂什么叫做骗分。正是因为做过,才留下了一个可怕的印象,有一种自带的恐惧,所以就有了:
第一题:100分
第二题:90分 丢分:10分
第三题:20分 丢分:10分

= =!还是弱得要死啊。。。所以我决定再针对2、3题说说。
第二题 信息传递
这道题其实是受了之前的恐惧的影响。。。觉得事情并不这么简单,草草地推了一下发现直接dfs好像有问题(其实没问题,只需要记录是在哪次dfs中访问的就可以了),于是就用了强连通分量。之前还没有想过爆栈,只想过时间复杂度能够接受,于是就这么做了。
所以又有了以下经验:
1.100000个点对于dfs来说一般不会爆栈,但是200000个点可以说是爆栈无疑。
2.如果你觉得某个符合时间复杂度要求的算法可行,不如多花点时间证明它,到时候换了个复杂的方法做对了还好说,做错了就尴尬了。
3.Tarjan你真厉害。

对于这道题其实还有一种解法,不过要慢一点:
对所有结点用Kahn算法进行topo排序。如果有圈,那些在圈中的点必定是无法进行topo排序的,换句话说,不在圈里面的点都被Kahn删掉了,只留下了圈里面的点。最后只需要对没被删掉的点进行BFS(防止爆栈)就可以了。当然,也可以模拟DFS,因为所有点的出度都为1。

第三题 斗地主
就是当年这道题教会了我要骗分才是王道!结果这次居然连30分都没有骗全= =。就这道题我觉得没什么好说的,看题解完全看得懂,但是自己做就做不来了。所以我想说说搜索中要注意的地方(勿喷):
1.最优性剪枝很好加吧。那还不加上= =。
2.可行性剪枝不好加?嫌太慢?那就不要偷懒,多动态更新一些数据。
3.有些数据不好求?不如换一个思路,多开一个数组又不是很大的事。
4.被TL,ML吓住了?不要怕,难道多点不好吗?你就先当是1s, 64MB好了。觉得时间空间够肯定很好,觉得不够,真正的时间空间不是还有多的吗?
5.一定要骗分!!!