80pts求助
  • 板块P1714 切蛋糕
  • 楼主wangzl
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/7/18 16:58
  • 上次更新2023/10/27 19:41:47
查看原帖
80pts求助
222039
wangzl楼主2022/7/18 16:58

rt.单调队列做法

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
//#define scanf scanf_s
using namespace std;
int n, m, a[500005], sum, ans = -0x7fffffff;
int main() {
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);
	int head = 0, tail = 0;
	while (tail < n) {
		sum += a[++tail];
		ans = max(ans, sum);
		while (head < tail && (sum <= 0 || tail - head + 1 > m)) {
			sum -= a[++head];
			ans = max(ans, sum);
		}
	}
	printf("%d", ans);
}
2022/7/18 16:58
加载中...