最短路.
- 这类点,边数目比较少,却有一些奇奇怪怪的条件的最短路,大多都是拆点.然而实现时并不需要真的拆点,只需要在做最短路的时候给 $dis$ 多加几维即可.
- 考虑暴力做法,应该是 $dfs$ 找出每一条路径,贪心地将不在路径上最短的边与在路径上最长的边交换,最多 $k$ 次.
- 然而路径条数可以被随便搞到指数级.
- 沿用贪心的思想,最后最优路径中的边一定会包含全部前 $L$ 小的边,可以将边排序,枚举 $L$ ,结合最短路解决.
- 设 $f(u,j,k)$ 表示从 $1$ 到 $u$ ,路径上有 $j$ 条前 $L$ 小的边,交换了 $k$ 次时的最短路.转移时分当前边不在前 $L$ 小与当前边在前 $L$ 小,用 $Dijkstra$ 转移即可.
注意正反加了两条边,实际排名需 $/2$ .
1 |
|