贪心:合并果子

简介: 分析:这道题不是前缀和,记好!!!用到了优先队列,默认是从大到小,改一下就变成了从小到大

76765a68e323025b84c08f5dec1e91a.png


分析:这道题不是前缀和,记好!!!用到了优先队列,默认是从大到小,改一下就变成了从小到大

源码:

include <bits/stdc++.h>//优先队列

using namespace std;

typedef long long ll;

priority_queue<ll,vector,greater >qu;

ll arr[100005];

int main(void)

{

int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>arr[i];
    qu.push(arr[i]);
}
long long sum=0;
while(qu.size()>1)
{
int lx=qu.top();
    qu.pop();
int ly=qu.top();
    qu.pop();
    sum=sum+lx+ly;
    qu.push(lx+ly);
}
cout<<sum<<endl;
return 0;

}

目录
相关文章
|
7月前
|
算法 测试技术 C++
【动态规划】【状态压缩】【C++算法】1815 得到新鲜甜甜圈的最多组数
【动态规划】【状态压缩】【C++算法】1815 得到新鲜甜甜圈的最多组数
|
算法
【Leetcode-70.爬楼梯 -88.合并两个有序数组】
【Leetcode-70.爬楼梯 -88.合并两个有序数组】
42 0
|
2月前
acwing 836 合并区间
acwing 836 合并区间
14 1
acwing 836 合并区间
|
4月前
|
算法 Java
LeetCode初级算法题:子数组最大平均数+二叉树的最小深度+最长连续递增序列+柠檬水找零
LeetCode初级算法题:子数组最大平均数+二叉树的最小深度+最长连续递增序列+柠檬水找零
44 0
|
6月前
|
算法 C++
【洛谷 P1090】[NOIP2004 提高组] 合并果子(贪心算法+哈夫曼编码+优先队列)
该编程题目要求设计算法,将不同种类的果子合并成一堆,使得消耗的体力最小。给定果子种类数`n`(1至10000)和每种果子的数量,需输出合并的最小体力值。使用优先队列(最小堆),每次取出两个数量最少的果子堆合并,并更新总体力消耗。样例输入为3种果子(1, 2, 9),输出最小体力耗费为15。提供的AC代码采用C++实现,通过优先队列优化合并顺序。
88 0
|
7月前
|
JavaScript
线性dp之石子合并
线性dp之石子合并
|
算法
基础算法(贪心 合并 位运算)
基础算法(贪心 合并 位运算)
64 0
|
人工智能 算法 C++
洛谷 P1090 合并果子(贪心)
洛谷 P1090 合并果子(贪心)
143 0
|
7月前
|
算法 搜索推荐 Java
算法编程(四):合并两个有序数组
算法编程(四):合并两个有序数组
77 0