GJ模拟赛 24_11-23 题解
posted on 2024-11-23 07:44:35 | under | source
T1
考虑已知序列求代价,不难发现对于一辆车而言,假如存在一辆停在它后面的车要先优先开出来的话,就要花费 1 点代价。
记 \(rk\) 表示开出来的优先级,\(f_{i,j,k}\) 为加入编号最大的 \(i\) 辆车后两个序列的 \(rk\) 最小值分别为 \(j,k\) 时的最小花费,大力转移。
复杂度 \(O(n^3)\)。
T2
简单容斥,之前还做过,不再赘述。
T3
显然不会在一个点重复加油。容易得出状态数为 \(O(nV)\) 的做法,考虑优化状态。
为了探究性质,假设没有容量限制,那么必然从一个点走到下一个油价更低的点,然后只加该路径所需的油即可,也就是说加油加到两个点间最短距离即可。现在有了容量限制可能出现无法到达油价更低的点的情况,那么贪心的想必然在该节点加油加到满因为之后油价不会更便宜。
综上,在一个点加油,只可能加到满或者恰好是到另一点的最短路径的油量(不能超出限制),那么状态数变为 \(O(n^2)\)。其实不必跑最短路,做 \(n\) 次 dp 即可,复杂度 \(O(n^4)\)。

浙公网安备 33010602011771号