Subtask2全红,求救!
查看原帖
Subtask2全红,求救!
278259
RemiliaScar1et楼主2020/4/30 11:19

代码如下

#include <bits/stdc++.h>
using namespace std;
int a[200010];
int q[1000010];
int head=1,tail=0;
int dp[1000010];
int n,l,r;

int main()
{
	scanf("%d%d%d",&n,&l,&r);
	for(int i=0;i<=n;i++)
	{
		scanf("%d",&a[i]);
	}
	for(int i=l;i<=n;i++)
	{
		while(head<=tail&&i-q[head]>r)
		{
			head++;
		}
		while(head<=tail&&dp[q[tail]]<=dp[i-l])
		{
			tail--;
		}
		q[++tail]=i-l;
		dp[i]=dp[q[head]]+a[i];
	}
	int ans=-10000;
	for(int i=n-r+1;i<=n;i++)
	{
		ans=max(ans,dp[i]);
	}
	cout<<ans;
	return 0;
}

2020/4/30 11:19
加载中...