社区讨论

ST表RE求调

P1714切蛋糕参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@m1yusdor
此快照首次捕获于
2024/10/07 18:12
去年
此快照最后确认于
2025/11/04 17:41
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=5e5+20;
int n,m;
int a[N];
int s[N];
int st[N<<1][30];
int query(int L,int R){
	int p=log2(R-L+1);
	return min(st[L][p],st[R-(1<<p)+1][p]);
}
int ans;
signed main(){
	scanf("%lld%lld\n",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%lld",a+i);
		s[i]=s[i-1]+a[i];
		st[i][0]=s[i];
	}
	st[0][0]=0;
	if(m==0){
		printf("0\n");
		exit(0);
	}
	for(int i=1;i<=27;i++){
		for(int j=0;j<=n&&j+(1<<(i-1))<=n;j++){
			st[j][i]=min(st[j][i-1],st[j+1<<(i-1)][i-1]);
		}
	}
	ans=-1;
	for(int i=1;i<=n;i++){
		ans=max(ans,s[i]-query((int)(max(0ll,i-m)),i-1));
	}
	printf("%lld\n",ans);
	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...