$n$ 个数的序列,要求每连续的 $k$ 个数至少选择一个数,一共选择 $x$ 个数的最大和。$(F1:n,k,x\le 200)$,$(F2:n,k,x\le 5000)$
题解
- 定义dp[i][j]:前 $i$ 个数选择 $j$ 个数且第 $i$ 个数为第 $j$ 个选的数的最大值。
- 显然对于 F1 直接 $n^3$ 转移即可。
- 对于 F2,转移的时候有一个显然的单调栈优化。
代码
1 |
|
Success and failure are temporary.
$n$ 个数的序列,要求每连续的 $k$ 个数至少选择一个数,一共选择 $x$ 个数的最大和。$(F1:n,k,x\le 200)$,$(F2:n,k,x\le 5000)$
1 | #include<bits/stdc++.h> |