这个题是简单的贪心思想,但是如果在每次合并之后排一次序,会超时。
正确解法时优先队列和堆
在了解的stl的priority_queue后,
类似的题P1334 瑞瑞的木板
#include <iostream>
#include<algorithm>
#include<queue>
using namespace std;
priority_queue<int ,vector<int>,greater<int> > q;
int main()
{
int n;
cin>>n;
int a;
for(int i=0;i<n;i++)
{
cin>>a;
q.push(a);
}
int ans=0;
for(int i=0;i<n-1;i++)
{
int x,y;
x=q.top();
q.pop();
y=q.top();
q.pop();
ans+=(x+y);
q.push(x+y);
}
cout<<ans<<endl;
return 0;
}