题解 | #搬水果#
搬水果
https://www.nowcoder.com/practice/e4c775b0f3ee42a4bb72c26d2e1eef8a
//本质就是哈夫曼树求weight
#include <iostream>
#include <queue>
using namespace std;
int main() {
int num;
priority_queue<int,vector<int>,greater<>> myqueue;
while (cin>>num) {
if(num==0){
continue;
}
for(int i=0;i<num;i++){
int a;
cin>>a;
myqueue.push(a);
}
int sum=0;
while (myqueue.size()>1) {
int a=myqueue.top();
myqueue.pop();
int b=myqueue.top();
myqueue.pop();
sum+=(a+b);
myqueue.push(a+b);
}
cout<<sum<<endl;
}
}
// 64 位输出请用 printf("%lld")


查看21道真题和解析