码迷,mamicode.com
首页 > 其他好文 > 详细

10.25 考试总结

时间:2018-10-28 20:48:13      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:复杂度   tarjan   相同   倍增   play   mst   str   开始   math   

10.25 考试总结

距离退役死亡越来越近。

circle

其实只要暴力查找就可以了

搜索跑图,稍微注意一下不要让法师反复横跳就可以了,多加一个数据就可以解决只要一找到已经访问过的就证明是环了....

开始想复杂了,以为可能有一个奇葩的图....原来就是一个简单的环啊

path

其实就是找必经之路,把一些可以多选择的....缩点,实际上就是tarjan缩点, 然后找桥。

桥就是我们要的必经之路

然后又要去学tarjan.....模板一下背不下来

mst

首先用prim 作出最小生成树。然后考虑修改哪条边的权值。
修改的边一定要选,那么我们只需要将这条边两端的点a; b 在最小生成树上的路径找出来,然后删掉路
径中边权最大的即可得到答案。
时间复杂度 \[O(n^2)\]

final

以我的能力就是暴力dijkstra了,最后好像是string爆空间了。实际上最好的应该是记录路径是最好的

这题有思维性,挺有意思的。三种算法都值得写。
用dijkstra + heap 实现算法。那么主要的问题是如何判断两条路径的字典序。
笨一点的方法:如果是两个字符串,则可以用二分+ hash 截取相同的前缀。然后看下一位的字符哪个更优即可。不过现在字符串都是路径,那么就不能二分,需要用倍增的方式来解决(类似LCA,需要先将两个字符串的长度变成相等的)。好像时间复杂度还不好过,而且不怎么好写。
聪明一点的方法:注意dijkstra 算法保证了字典序是递增的,所以每次如果需要更新一个点的路径时,我们只要比对最后一个字符(如果前面的串相等就比较,否则不需要更新)。在堆中更新也是类似的,如果前面相等就比较最后一个字符,否则更差。时间复杂度 \[O(n + mlog n)\] 。好写一些了。

10.25 考试总结

标签:复杂度   tarjan   相同   倍增   play   mst   str   开始   math   

原文地址:https://www.cnblogs.com/rendex/p/9866678.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!