优先队列为什么错了

P1725 琪露诺

星灵王 @ 2018-03-21 22:17:53

第一次打优先DP,感觉思路没错,往大佬纠错

#include<iostream>
#include<queue>
using namespace std;
int a[200005],f[200005];
int main()
{
    int n,l,r;
    priority_queue<int> q1;
    priority_queue<int> q2;
    cin>>n>>l>>r;
    for(int i=0;i<=n;i++)
    cin>>a[i];
    for(int i=l;i<=n+1;i++)
    {
        q1.push(f[i-l]);
        int t=q1.top();
        if(i-r-1>=l)
        q2.push(f[i-r-1]);
        while(!q2.empty()&&q1.top()==q2.top())
        {
            q1.pop();
            q2.pop();
        }
        f[i]=q1.top()+a[i];
    }
    cout<<f[n+1]<<endl;
    return 0;
}

|