P1714 切蛋糕
传送门
思路
最大不定子段和(dp思想),前缀和+单调队列优化。
代码
#include
#include
#define MAXN 500007
using namespace std;
int n, m, arr[MAXN], q[MAXN], ans = INT32_MIN;
int main(void)
{
cin >> n >> m;
for (int i = 1; i <= n; i++)
{
cin >> arr[i];
arr[i] += arr[i - 1];
}
int head = 0, tail = 0;
for (int i = 1; i <= n; i++)
{
while (head < tail && q[head] + m < i)
head++;
while (head < tail && arr[i] < arr[q[tail - 1]])
tail--;
q[tail++] = i;
ans = max(ans, arr[q[tail - 1]] - arr[q[head]]);
}
cout << max(ans,arr[1]);
return 0;
}