蒟蒻求助
查看原帖
蒟蒻求助
320449
forest114514楼主2023/7/17 15:33
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=2*1e5+100;
int n,l,r;
int a[N],f[N],q[N],head=1,tail=0;
int main(){
	int maxx=-0x3f3f3f3f;
	cin>>n>>l>>r;
	memset(f,-0x3f,sizeof f);
	f[0]=0;
	for(int i=0;i<=n;i++) cin>>a[i];
	for(int i=l;i<=n;i++){
		while(i-q[head]>r&&head<=tail)head++;
		while(f[i-l]>f[q[tail]]&&head<=tail)tail--;
		q[++tail]=i-l;//为什么这句放在18行就会错??? 
		f[i]=f[q[head]]+a[i];
		
		
	} 
	for(int i=n-r+1;i<=n;i++) maxx=max(maxx,f[i]);
	cout<<maxx<<endl;
	
	return 0;
}
2023/7/17 15:33
加载中...