博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2016级算法期末上机-C.简单·Bamboo's Fight with DDLs III
阅读量:4502 次
发布时间:2019-06-08

本文共 695 字,大约阅读时间需要 2 分钟。

简单·Bamboo's Fight with DDLs III

分析

一句话:贪心,简单哈夫曼应用,要求的其实是所有结点的值与权值的乘积之和,也就是带权路径长。

可以理解为非叶子节点的权值的和,这里的权值就是零食个数

样例分析: 1 2 3 --- 1 2->3 3 3->6 3+6=9 所以得到6的同学是没有最后相加

因为只需要求最后的结果,不需要建树,可以用优先队列实现,每次挑权值最小的两个相加,将生成的新的结点进入到优先队列中,每次都要将pop的结点的权值加入ans中,直到队列为空

博客 对于带权路径和讲的比较形象

代码样例

#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;int main(){ int n,m; while(~scanf("%d",&n)) { priority_queue
,greater
>Q;//从小到大 for(int i = 0;i
1) { t1 = Q.top();Q.pop(); t2 = Q.top();Q.pop(); temp = t1+t2; ans +=temp; Q.push(temp); } printf("%d\n",ans); }}

转载于:https://www.cnblogs.com/AlvinZH/p/8215811.html

你可能感兴趣的文章
Centos yum 安装 ipython
查看>>
探寻 webpack_bundle_analyzer 原理
查看>>
python list 插入元素
查看>>
python2 和 python3兼容写法
查看>>
C# Windows服务中执行死循环
查看>>
Linux下进程的创建过程分析(_do_fork do_fork详解)--Linux进程的管理与调度(八)
查看>>
Webpack4 splitChunks配置,代码分离逻辑
查看>>
Trie树详解及其应用
查看>>
第三组 通信一班 030 OSPFv2、OSPFv3综合实验
查看>>
java IO流文件的读写具体实例(转载)
查看>>
vue随笔
查看>>
一些汇编指令
查看>>
面向对象
查看>>
CallBack Function Python
查看>>
读书笔记-代码大全
查看>>
CentOS7为docker-ce配置阿里云镜像加速器
查看>>
groovy基本语法--JSON
查看>>
学习笔记2 Haspmap简述
查看>>
【AngularJs】 <br>换行显示成字符串
查看>>
Angular2 父子组件通信方式
查看>>