玄关:一个和题解不一样的思路,但是没有过……
  • 板块学术版
  • 楼主a_blue_fool
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/9/24 14:02
  • 上次更新2024/9/24 18:57:54
查看原帖
玄关:一个和题解不一样的思路,但是没有过……
1046223
a_blue_fool楼主2024/9/24 14:02

原题:P1714

自己觉得贪心思路没有问题,找了几个讨论区的hack也都过了,交上去 #2#3WA。

如果有问题希望有dalao指出QWQ

#include <iostream>
#include <cstdio>
#include <queue>

using namespace std;

int n, m, tot, ans=-1e9, l, r;
int dp[500005];

int sum(int l, int r){
	return dp[r]-dp[l-1];
}

int main(){
//	freopen("P1714_2.in", "r", stdin);
	
	scanf("%d%d", &n, &m);
	for(int i=1; i<=n; i++)scanf("%d", &dp[i]), dp[i]+=dp[i-1];
	
	for(l=1, r=1; r<=n; r++){
		if(r-l+1>m) //出界
			while(r-l+1>m)
				l++;
		
		tot=sum(l,r); //计算当前的和
		ans=max(ans, tot); //更新答案
		if(tot<=0) //如果当前的和小于零,那么对后面的答案一定没有贡献了,所以可以跳掉
			l=r+1;
	}
	
//	cout<<l<<" "<<r<<endl;
	
	while(l<=n) //解决最后几位的问题
		ans=max(sum(l,n), ans), l++;
	
	printf("%d", ans);
	return 0;
}

救救孩子吧……

2024/9/24 14:02
加载中...