这周的题型是最短路径
一共有四个:Floyd,Bellman-Ford,Dijkstra,Johnson.
能大体明白Dijkstra,Floyd的原理,忘了Bellman-Ford是怎么推导的。
感觉简单的最短路径题,不需要明白原理和推导证明过程。只要明白代码的每一步是怎么实现的。
一般直接用堆优化的Dijkstra
数据小可以用Floyd
求任意两点的最短路径就用Floyd
有负权的就用Bellman-Ford(现在还没有遇到过有负权的题)
简单题只要背好堆优化的Dijkstra一般都能过(Dijkstra相比于Floyd实现困难,但所用的数据可以比较大)
因为这几周都是给固定类型的题去做,所以在做的时候,不需要考虑其他的任何事情,只要往最短路径去想就行。大部分题解题思路不难想,但是模板太难背了,每次都出几个错误,而且因为理解的不够深刻,有些时候会忘了模板的每一步是干什么,需要重新翻书。
最短路径的题主要有几个令人难受的地方:
1. 最让人难受的是像这样的
P1938 [USACO09NOV]Job Hunt S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
P3906 Geodetic集合 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
即使知道要用最短路径,也完全不知道怎么用,题解能看懂,但就是不知道怎么推过去的,思路是怎么形成的。
2. 其次就是
P1396 营救 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
P2888 [USACO07NOV]Cow Hurdles S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
将最短路径中的距离换成别的值,来用最短路径算法实现的,这类题初次接触理解困难,但看多了,感觉比第一种的要稍微简单些。因为是用距离替换成其他的值来操作的,所以只是在实现的时候改一下距离判断的地方就好。
3. 在书上看到的三类题,但是没有在洛谷上遇到。
同样都是在距离的实现的代码那里进行操作,
有两个标准的最短路径,可以先Dijkstra过第一个标准,再用DFS过第二个标准。
4. 存图是真的难,上课时我以为我懂了,下课又看了书,信心满满的去实现,结果啥都不会。
想起来那句话 Talk is cheap, show me the code 。再懂,不能用代码去实现也只能是空谈。
5. STL和其他的方法可以来优化。
这周没有之前那么的心浮气躁了,不再多想。刚上大学也包括现在,功利心太强,但又想偷懒,少努力高回报,有事就去问学长,问这问那的。现在明白了,看待有些东西没有那么的功利了,每个人的情况也不一样,更重要的是不应该被别人的言语所左右,大学就四年,已经过去一年了,剩下的三年想做一些,想趁着还没有步入社会,抛开一些杂事,去做一些自己喜欢的事。