USACO-Chapter2-Section2.4

USACO-Chapter2-Section2.4 Shortest Path

感觉虽然题目说是最短路,实际上很多不能算最短路吧。题目也不难,最难也就是裸的dijkstra。不过自己搜索从一开始的很丑陋很暴力的,越写越优雅了倒是真的。

2.4.1 ttwo

2.4.2 overfencing

2.4.3 cowtour

2.4.4 comehome

这道题一开始我想的是反向BFS的,后来发现这个图,直接BFS不一定最先出来的是最短边,可能还是要遍历整张图。于是用了dijkstra。 dijkstra用裸的,什么优化都没有的就可以跑。一开始我还在觉得用字母好难处理,后来发现用字母太妙了。 一开始看到一万条边,把我吓得不行,后来想了想,用字母表示点,最多也就五十多个点,等于有很多重边和自环,easy~

dijkstra反向跑一下就行了,难点在hash一下字母和数字对应关系。 有的人是dijkstra松弛到大写字母最短边就return了,因为我不太会这种写法,所以我跑完了全部的dijkstra然后再去找。

2.4.5 fracdec

直接模拟就好了。遇到了的几个问题: 1. 一开始判断是否出现过这个情况,我没用set< pair >来处理,而是用了两个set,一个记录商,一个记录余数。结果会发现可能,商是出现过的,余数也是出现过的,然而这两个不是同时出现的,导致出现错误(样例就是这种情况)。 2. 对整除的\(1.0\)这种情况,容易变成\(1.(0)\)。可以通过判断余数是否是0来判断整除与否。



本文标题:USACO-Chapter2-Section2.4

文章作者:Xie Keyi

发布时间:2018年04月24日 - 16:04

原始链接:https://xiekeyi98.com/12192b48.html

许可协议: 署名-非商业性使用-相同方式共享 4.0 国际 转载请保留原文链接及作者。