题目链接:http://poj.org/problem?id=3253
中文大概意思:
思路:
示例:
代码:
#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
priority_queue<int,vector<int>,greater<int> > queue1;
long long fun(int cases);
int main(){
int cases,tmp;
cin>>cases;
for(int i = 0;i<cases;i++){
scanf(" %d",&tmp);
queue1.push(tmp);
}
printf("%lld\n",fun(cases));
return 0;
}
long long fun(int cases){
long long res = 0;
int min1,min2;
while (queue1.size()>1){
min1 = queue1.top();
queue1.pop();
min2 = queue1.top();
queue1.pop();
queue1.push(min1+min2);
res+=min1+min2;
}
return res;
}