优先队列 合并
来源:互联网 发布:windows7服务优化说明 编辑:程序博客网 时间:2024/06/09 01:34
https://biancheng.love/problem/720/index
本题题目比较清晰,给定一列数,每次只合并两个数,并将这两个数相加得到的新数加入数组,并记录二数之和且依次累加。
本题其实就是一道优先队列问题,优先规则是每次取两个最小的数进行合并,并将其和加入原队列,而将两数从原队列删除。可以采用数组模拟这个优先队列,也以用数组构造一个最小堆,每次从堆中取出堆的第一个元素,并将其删除,再取出第二个元素,并将其删除,而将两数之和插入该最小堆,直至堆中取出第二个元素后,堆为空则停止循环
#include<cstdio>#include<algorithm>#include<iostream>using namespace std;int a[10001];int main(){ int n; long long ans=0,ans1,sum=0; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&a[i]); } ans1=sum; for(int i=0;i<n-1;i++) { //每次循环对数组索引为i后面的进行排序,然后求a[i]+a[i+1]之和ans1,并将ans1赋给a[i+1]直至循环结束,本方法效率较低,使用最小堆模拟可提高方法执行效率 sort(a+i,a+n); ans1=a[i]+a[i+1]; ans+=ans1; a[i+1]=ans1; } printf("%lld",ans);}
0 0
- 优先队列 合并
- 合并果子(贪心+优先队列)
- C++优先队列 合并果子
- C++优先队列 合并果子
- 合并果子优先队列做法
- 合并果子(优先队列)
- 合并果子(优先队列)
- 1063 合并果子 优先队列
- 【vijos】【优先队列】合并果子
- 合并果子(优先队列)
- P1090 合并果子 <优先队列>
- SDNU1171.合并果子优先队列
- 优先队列——合并果子
- 合并果子,优先队列的使用
- RQNoj 合并果子 优先队列最小堆
- 优先队列中左式堆的合并算法
- tyvj 1066 合并果子(优先队列)
- 【原创】堆排序+合并果子+优先队列
- 文章标题
- findFundamentalMat和findHomography的比较
- execute、executeQuery和executeUpdate之间的区别
- Effective Java 2.5——避免创建不必要的对象
- 【Rollup】浅谈Oracle中的Rollup分组函数
- 优先队列 合并
- POJ-3660-Cow Contest
- PHP+MySQL中文数据保存到数据库乱码的解决方法
- linux内核系列(1)——内核模块儿的编写
- mysql 数据库用户创建和授权
- 【IMWeb训练营作业】---Select---
- 如何申请国际版一年期的Office 365开发者账号
- Java并发编程:Callable、Future和FutureTask
- C语言fflush()函数:清空文件缓冲区(或标准输入输出缓冲区)