传送门

文章目录

  • 题目描述
  • 解析
    • 细节
  • 代码

题目描述

解析

其实就是构造一棵树
另所有带权点都为叶子节点
其代价为权值与深度的乘积
求最小代价及最小代价下的最小深度

可以看成一开始有n棵小树
每次把k棵合并在一起
最后合成一棵大树就行了
每次合并的代价是k棵树的权值和
看到这个我们不禁想到了合并果子
自然想到用堆来维护最小值
注意由于要保证深度最小所以要双关键字排序
权值相同时按树的深度排序

细节

1.当(q.size()-1)%(k-1)!=0时,需要填一些空点使其能被恰好填满
2.注意最后深度要减1

代码

#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N=4e6+2e5+100;
const int M=3e5+100;
ll n,m,k;
ll w[N];
struct node{ll num,len;bool operator < (const node y)const{if(num==y.num) return len>y.len;return num>y.num;}
};
priority_queue<node>q;
ll tot,mx=1;
int main(){scanf("%lld%lld",&n,&k);for(int i=1;i<=n;i++){scanf("%lld",&w[i]);q.push((node){w[i],1});//tot+w[i];}while((q.size()-1)%(k-1)) q.push((node){0,1});while(q.size()!=1){ll ww=0,h=0;for(int i=1;i<=k;i++){node x=q.top();q.pop();ww+=x.num;h=max(h,x.len);}tot+=ww;q.push((node){ww,h+1});mx=max(mx,h+1);}printf("%lld\n%lld",tot,mx-1);return 0;
}
/*
10 7 7
2 2 1
2 4 2
1 7 2
2 7 3
4 2 2
4 4 1
6 7 3
7 7 1
7 5 2
5 2 1
*/

P2168 [NOI2015] 荷马史诗(哈夫曼编码树)相关推荐

  1. bzoj 4198 [ Noi 2015 ] 荷马史诗 —— 哈夫曼编码(k叉哈夫曼树)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4198 第一次写哈夫曼树!看了很多博客. 哈夫曼树 & 哈夫曼编码:https://w ...

  2. [Huffman树] aw149. 荷马史诗(哈夫曼模型+贪心)

    文章目录 1. 题目来源 2. 题目解析 1. 题目来源 链接:149. 荷马史诗 2. 题目解析 k叉哈夫曼树问题. n 个叶子节点合并成 1 个点,总共合并减少 n-1 个点,每次合并都会减少 ( ...

  3. [NOI2015]荷马史诗【哈夫曼编码】

    [NOI2015]荷马史诗 推荐一篇题解 (感觉自己讲不清楚所以不如直接粘题解) 观察之后发现这就是哈夫曼编码,于是按照编码方式构造即可. #include <bits/stdc++.h> ...

  4. 【洛谷P2168】荷马史诗

    题目描述 追逐影子的人,自己就是影子 --荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马史诗>.但是由<奥德赛&g ...

  5. 树的企业应用-哈夫曼编码树-有趣的数据压缩算法

    树的企业应用-哈夫曼编码树-有趣的数据压缩算法 哈夫曼编码 描述 张三去李四家里,但 李四是一个女生,所以张三找李四去上海迪尼斯玩 - 亚历山大.张三去伊丽莎白.李四家里,但 伊丽莎白.李四是一个女生 ...

  6. 哈夫曼编码树的经典题目

                                                          点击打开题目链接   poj3253 Fence Repair Time Limit: 20 ...

  7. NOI2015 荷马史诗

    题目链接:戳我 首先看出来这是一个哈夫曼树! 然后就按照这里面哈夫曼树那一点说的,就可以A掉这个题啦 #include<iostream> #include<cstdio> # ...

  8. 荷马史诗【k叉哈夫曼树】

    题目描述 追逐影子的人,自己就是影子. --荷马 达达最近迷上了文学. 她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马史诗>. 但是由<奥德赛>和 ...

  9. 洛谷P2168 荷马史诗 [NOI2015]

    题目描述 追逐影子的人,自己就是影子 --荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马史诗>.但是由<奥德赛&g ...

最新文章

  1. Postman批量跑接口
  2. java 前端页面调用数据库_java如何生成json被前端调用
  3. Angular 服务器端渲染的学习笔记(二)
  4. 马化腾最崇拜的作家吴晓波《历代经济变革得失》读书笔记
  5. C++ 通讯录设计(四)
  6. IOS--CALayer的介绍及使用技巧
  7. dcp9030cdn定影_兄弟Brother DCP-9030CDN打印机驱动(修复DCP-9030CDN打印机连接故障)V1.0 正式版...
  8. Java高全级别灰色_想问下用过JAVACV的大兄弟,为啥我这边抽取图片总是有灰色图片...
  9. vue 判断一个数是否在数组中_高级前端进阶,vue如何实现$nextTick
  10. 查看数值类型python_Python数据科学实践 | 数据类型
  11. 未知环境探索(二)基于边界点的自主环境探索
  12. while 循环语句的使用
  13. leet 75. 颜色分类
  14. AI一周热闻:华为豪掷3.3亿剑桥买地,自建光芯片工厂;比特大陆IPO失败,组织架构调整...
  15. 如何删除计算机文件类型,怎么删除win10.1电脑中的文件夹分类?
  16. 智能家居Homekit系列一智能插座
  17. saber 2016打不开帮助文档
  18. bochs安装以及使用
  19. 【kafka实战】分区重分配可能出现的问题和排查问题思路(生产环境实战,附视频)
  20. 申请国自然科学基金也有计算公式

热门文章

  1. php cli swoole mysql_[了解实践]Swoole、PHP与MySQL:连接池,swoole扩展实现真正的PHP数据库连接池。...
  2. python时间函数报错_Python Day11-LEGB-global-时间函数
  3. case when影响性能吗_字段为NULL会影响查询性能吗?
  4. java八进制转十六进制_java-十进制、八进制、十六进制数互相转换
  5. leetcode19. 删除链表的倒数第 N 个结点
  6. C++ 学习之旅(12)——static用法小结
  7. [JavaWeb]Web概念概述
  8. 字符串哈希-BKDRHash
  9. [蓝桥杯2019初赛]不同子串-substr,模拟
  10. 蓝桥杯 123 二分+打表