Codeforces 865 D.Buy Low Sell High 貪心 and 優先隊列

題意:N天不同的價格,問你最好的方式得到最多的錢。

優先隊列模擬,從前往後,所有遍歷過的都放入優先隊列當中,高價賣的那天可能後面還有更小的可以去賣,那麼好辦法就是讓這天可以後悔。那麼再push一次就可以後悔了。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define en '\n'
int rd(){
int tt;scanf("%d",&tt);return tt;
}
priority_queue<int,vector<int>,greater<int> >q;

signed main(){
    #ifdef swt
    freopen("input2.txt","r",stdin);
    #endif // swt
    int n;
    cin>>n;
    ll ans=0;
    while(n--){
        int tem=rd();
        if(q.size() and q.top()<tem){
            ans+=tem-q.top();
            q.pop();
            q.push(tem);
        }
        q.push(tem);
    }
    cout<<ans<<en;
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章