每次选和最小的两堆合并就好。在被之前的一道堆优化贪心的比赛题蹂躏之后感觉有经验了,之前看过这题都没啥思路的。
#include<cstdio>
#include<queue>
#define _rep(i,a,b) for(int i=(a);i<=(b);i++)
using namespace std;
int main()
{
//freopen("in.txt","r",stdin);
priority_queue<int,vector<int>,greater<int> >q;
int n,a;
scanf("%d",&n);