hack过不了求助,悬赏关注
查看原帖
hack过不了求助,悬赏关注
784813
SakurajiamaMai楼主2023/5/7 16:12
#include<bits/stdc++.h>
using namespace std;
const int N=1000010;
int use[N],l,r,n,hh,tt,q[N],a[N],f[N],res=-1e9;
int main()
{
    cin>>n>>l>>r;
    for(int i=1;i<=2*n;i++)
        f[i]=-2e9;
    f[0]=0;
    for(int i=l;i<=r;i++) use[i]=1;
    for(int i=0;i<=n;i++)
        cin>>a[i];
    for(int i=0;i<=n;i++)
    {
        while(hh<=tt&&f[i]>f[q[hh]]) hh++;///队头最大;
        while(hh<=tt&&f[i]>f[q[tt]]) tt--;
        q[++tt]=i;
        f[i+l]=f[q[hh]]+a[i+l];
        if(use[i]) use[i+l]=1;
    }
    for(int i=n+1;i<=n+l;i++)
        if(use[i]) res=max(res,f[i]);
    cout<<res;
    return 0;
}
2023/5/7 16:12
加载中...