题解 P5322 【[BJOI2019] 排兵布阵】

nekko

2019-04-21 20:13:59

Solution

一开始想了个复杂度爆炸的dp…… $f_{i,j}$ 表示前 $i$ 类城堡,获得了 $j$ 个城堡的最小花费 状态数是 $O(n^4)$ 的,转移是 $O(n)$ 的(在这里认为 $n$ 和 $s$ 同阶) 总时间复杂度是 $O(n^5)$ 的,神奇的有 $70pts$…… 考虑到 $m$ 只有 $20000$,不妨直接把 $m$ 压进去…… 设 $f_{i,j}$ 表示前 $i$ 类城堡,花了 $j$ 个兵,此时获得的最大收益 考虑第 $i$ 类城堡的时候,把所有玩家按照 $a$ 从小到大排序 然后枚举打败了几个玩家,假设打败的玩家中最大的 $a$ 是 $k$,显然只需要 $2k+1$ 个兵就够了 然后跑个背包就行了 时间复杂度是 $O(snm)$ 的,然后由于跑不满于是就过了……