7 条题解
- 1
信息
- ID
- 2047
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 32
- 已通过
- 0
- 上传者
考虑动归,在第i点时,在i-k到i中肯定有一个点j不能选择,即:j为断点。
所以f[i]=max(f[i],f[j-1]+a[j+1]+a[j+2]……a[i])(i-k<=j<=i) 所以维护前缀和,然后方程就变成了
f[i]=max(f[i],f[j-1]+sum[i]-sum[j]) (i-k<=j<=i)
变形一下变成: f[i]=max(f[i],f[j-1]-sum[j])+sum[i] (i-k<=j<=i)
发现max里面的值只与j有关,所以可以用单调队列优化转移。