http://poj.org/problem?id=3253
题目大意:切木板,每次切木板的费用等于当前木板的长度,求切出给出的几组短木板的最小费用。
合并果子,优先队列秒过。注意要用long long
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
priority_queue <long long,vector<long long>,greater<long long> > q;
int x,n,ans,num;
int main()
{
scanf("%d",&n);
for(;n--;q.push(x))
scanf("%d",&x);
for(num=0;!q.empty();q.push(num))
{
num=q.top();
q.pop();
if(q.empty())
break;
else
num+=q.top();
q.pop();
ans+=num;
}
printf("%lld",ans);
return 0;
}