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)\)

posted @ 2026-01-14 17:31  Zwi  阅读(0)  评论(0)    收藏  举报