贪心 + 记忆化搜索.
贪心,先考虑挂钩多的选不选,再考虑挂钩少的选不选,将物品按照挂钩数目从大到小排序.
设 $f(i,j)$ 表示可以选择 $i\sim n$ 的物品,有 $j$ 个挂钩,能获得的最大收益,枚举第 $i$ 个选还是不选来转移.
因为物品是按照挂钩数目从大到小考虑的,就没有后效性了.
挂钩数目可能很多,但有用的最多 $n$ 个,所以状态数是 $O(n^2)$ 的.
时间复杂度 $O(n\log n+n^2)$ .
1 |
|
夢はここに 思い出は遠くに
贪心 + 记忆化搜索.
贪心,先考虑挂钩多的选不选,再考虑挂钩少的选不选,将物品按照挂钩数目从大到小排序.
设 $f(i,j)$ 表示可以选择 $i\sim n$ 的物品,有 $j$ 个挂钩,能获得的最大收益,枚举第 $i$ 个选还是不选来转移.
因为物品是按照挂钩数目从大到小考虑的,就没有后效性了.
挂钩数目可能很多,但有用的最多 $n$ 个,所以状态数是 $O(n^2)$ 的.
时间复杂度 $O(n\log n+n^2)$ .
1 | #include<bits/stdc++.h> |