合并果子

贪心思想,每次合并最小的两堆就能使总消耗最少,所以考虑优先对列,不过要从大到小。
`#include<stdio.h>

include

include

using namespace std;

int main(){
int n,a;
priority_queue<int,vector,greater >q;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a);
q.push(a);
}
int sum=0;
for(int i=0;i<n-1;i++){
int t=0;
sum+=q.top();
t+=q.top();
q.pop();
sum+=q.top();
t+=q.top();
q.pop();
q.push(t);
}
printf("%d",sum);
return 0;
} `

posted @ 2025-02-07 14:50  十柒*  阅读(3)  评论(0编辑  收藏  举报