带权路径长度即是叶节点权值与路径长度乘积的和,也是所有非叶节点权值的和
#include <iostream> #include <queue> using namespace std; int main() { int n; while (cin >> n) { // 注意 while 处理多个 case // cout << a + b << endl; priority_queue<int,vector<int>,greater<int>> myQueue; while(n--){ int temp; cin>>temp; myQueue.push(temp); } int sum=0; while(myQueue.size()>1){ int a=myQueue.top(); myQueue.pop(); a+=myQueue.top(); myQueue.pop(); myQueue.push(a); sum+=a; } // sum+=myQueue.top(); cout<<sum<<endl; } } // 64 位输出请用 printf("%lld")