请问今天要来点奇技淫巧吗
7.28
- 虚拟源点,可以用来处理一些既有点权又有边权的图论问题
例题:CF938D
题意就是让你去买票,每个城市都有不同价格的票,城市之间有道路,道路有过路费,问你以每个城市为起点,买一张票最少要花多少钱。
$1e5$ 范围。
我们发现这题显然是最短路,但是有边权的情况下,每个点也有不同的权值,这就导致我们很难做。此时可以考虑建立虚拟源点。
我们运用假设性原则,假设有一个点,它连向了每一个城市,然后连接的边权为当前城市的票价,然后以这个点为源点跑一边最短路就彳亍了。
正确性可以自己手玩一下qwq。
8.4
- 并查集连续合并的优化,思想是类似于 KMP 的数组+跳跃式合并
例题:CF566D
题目主要就是问你并查集怎么把 $x-y$ 的所有元素合并起来。
暴力,$5e5$ 过不得,然后这里要用一个类似于 KMP $next$ 数组的优化。
我们可以搞一个 $next$ 数组,用来存第 $i$ 个点之后,第一个和它不处于一个集合内的元素,然后动态更新 $next$ ,同时每次 $i=nt[i]$。
具体实现可以看代码,洛谷交了。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 你看到我的blog了!