学习内容:图论算法,最小生成树(Kruskal,prim),最短路径(Dijkstra,bellman ford,Floyd),字典树,线段树,拓扑排序,并查集。
总结: 本周要学内容的也很多,所以也没有全部学完比如拓扑排序,种类并查集等。不过这周题目的思维难度没有上周的难,基本流程就是:看懂算法→记好模板→看懂题目→转化成图论模型→套用模板就能完成大部分的题啦。但是还是有很多写得很困难的题,D题blabla不知道是要求什么东西,看了题解才发现是要求最大路径是否有正环,跟一般的求最短路径完全相反。E题一开始用dijkstra求最短路径但也不知道怎么求出最小的最大跳跃距离,看了别人的思路才最到是用dijkstra的方法维护一个到某点的最小的最大跳跃距离d[]数组,而不是笼统地套用模板把d[]数组看成是到某点的最小路径,还有F题可能会有多个相同的边但权值不同,所以输入要处理一下,权值要是最小的才有效,实在有点坑。
一个问题可能有多种不同的算法可以求解,一般最小生成树我都用kruskal+并查集这样写的快效率高;最短路径如果没有负权的话就直接dijkstra,有负权则用SPFA,folyd最简单但也最容易超时,三重循环看着都感觉会TLE。其实kruskal还可以用优先队列优化
来源:https://www.cnblogs.com/megadeth/p/11330553.html