合并果子
题目链接
这个只能用于结构体中
struct item
{
int val;
friend bool operator < (item a,item b)
{
return a.val > b.val;
}
};
一定要记得加这句话不然循环就出不来了
if(q.empty()) break;
AC代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
#define MAXN 10010
using namespace std;
int G[MAXN];
struct item{
int val;
friend bool operator < (item a,item b){
return a.val > b.val;
}
};
//priority_queue<int,vector<int>,greater<int> >q;
priority_queue<item> q;
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&G[i]);
item t;
t.val = G[i];
q.push(t);
}
int cur=0;
while(!q.empty())
{
int num=0;
num=num+q.top().val;
q.pop();
num=num+q.top().val;
q.pop();
cur=cur+num;
item t;
t.val =num;
if(q.empty()) break;
q.push(t);
}
printf("%d",cur);
return 0;
}