堆的性质
1.堆是一种有特殊性质的二叉树,它的基本要求就是堆中所有节点必须都大于(或者等于)其孩子节点的值
2.当h>0时,所有叶子节点都在h或者h-1层,也就是说堆是一种完全二叉树
P1334 瑞瑞的木板
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e4+10;
int n;
int a;
ll sum;
ll cnt;
priority_queue<int,vector<int>,greater<int> > q;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a);
q.push(a);
}
while(q.size()!=1){
int a=q.top();
q.pop();
int b=q.top();
q.pop();
cnt=a+b;
q.push(cnt);
sum=sum+cnt;
}
printf("%lld\n",sum);
return 0;
}