首页 > 代码库 > 贪心//优先队列

贪心//优先队列

n堆苹果,每次花费的体力是两堆苹果的总和,问花费的最少体力。
优先队列,很好处理。
#include <bits/stdc++.h>using namespace std;int main(){    priority_queue<int,vector<int>,greater<int> > que;     int n,t;    int sum=0;    cin>>n;    for(int i=0; i<n; i++)    {        cin>>t;        que.push(t);    }    for(int i=0;; i++)    {        int s1=0,s2=0;        s1 = que.top();        //cout<<s1<<" ";        que.pop();        if(que.empty())        {            que.push(s1);            break;        }        s2 = que.top();        que.pop();        int s = s1+s2;        sum+=s;        if(que.empty())        {            que.push(s);            break;        }        que.push(s);        if(que.empty())        {            que.push(s1);            break;        }    }    cout<<sum<<endl;    return 0;}

 

贪心//优先队列