求调
  • 板块P1725 琪露诺
  • 楼主Grace2022
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/1/28 22:25
  • 上次更新2025/1/29 09:04:56
查看原帖
求调
656125
Grace2022楼主2025/1/28 22:25

其实样例都没过(小声
有人帮必关,没人帮我就留这哪天想起来调
最后祝大家除夕快乐/新春快乐

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=4*1e5+20;
int a[N],f[N],b[N];
signed main(){
    //cout<<sizeof(s)/1024.0/1024;
    int n,l,r,ans=0;
    cin>>n>>l>>r;
    for(int i=0;i<=n;i++){
        cin>>a[i];
        //f[i]=a[i];
    }
    priority_queue<pair<int,int>> q;
    for(int i=0;i<l;i++){
        q.push({a[i],i});
    }
    f[0]=a[0];
    for(int i=l;i<=r+n;i++){
        //cout<<123123<<endl;
        if(i<=n) q.push({a[i],i});
        pair<int,int> t=q.top();
        q.pop();
        while(q.size() && b[t.second]){
            //cout<<t.first<<' '<<t.second<<endl;
            t=q.top();
            q.pop();
        }
        f[i]=t.first+a[i];
        q.push({f[i],i});
        b[i-l]=1;
        /*
        for(int j=l;j<=r && i-j>=0;j++){
            f[i]=max(f[i],f[i-j]+a[i]);
        }
        */
    }
    /*
    for(int i=0;i<=n+r;i++){
        cout<<f[i]<<' ';
    }
    */
    for(int i=n+1;i<=n+r;i++){
        
        ans=max(ans,f[i]);
    }
    cout<<ans;
    return 0;
}
2025/1/28 22:25
加载中...