[BZOJ]4198 [NOI2015] 荷马史诗 哈夫曼树
4198: [Noi2015]荷马史诗
Time Limit: 10 Sec Memory Limit: 512 MB
Submit: 1512 Solved: 797
[Submit][Status][Discuss]
Description
追逐影子的人,自己就是影子。 ——荷马
Input
输入文件的第 1 行包含 2 个正整数 n,k,中间用单个空格隔开,表示共有 n 种单词,需要使用 k 进制字符串进行替换。
Output
输出文件包括 2 行。
Sample Input
1
1
2
2
Sample Output
2
HINT
Source
[Submit][Status][Discuss]
HOME Back
学习了一发哈夫曼树... 于是就来看这道当时让很多神犇跪倒的题目... 怎么会考到这么偏的东西? 不会就跪啊. 看了之后再来看这道题? ??? k进制所以是k叉哈夫曼? 长度最小同时最长也要最小只要在建树过程中贪心一下就行了. 权值相同要深度最小的. 注意不满k叉要补0点.
为什么priority_queue的排序重载方式要反过来? 调了半天. (主要是我弱)
#include<bits/stdc++.h>
using namespace std;
typedef long long lnt;
lnt ans;
int n, res, k;
struct node {lnt val; int dep;inline friend bool operator < (const node &a ,const node &b) {return (a.val == b.val) ? a.dep > b.dep : a.val > b.val;}
};
priority_queue<node> q;
inline const lnt read() {register lnt x = 0;register char ch = getchar();while (ch < '0' || ch > '9') ch = getchar();while (ch >= '0' && ch <= '9') x = (x << 3) + (x << 1) + ch - '0', ch = getchar();return x;
}
int main() {n = read(), k = read();register lnt x;register int i, res;for (i = 1; i <= n; ++ i)x = read(), q.push((node){x, 1}); res = (n - 1) % (k - 1);if (res) res = k - 1 - res, n += res;for (i = 1; i <= res; ++ i) q.push((node){0, 1});while (n > 1) {int mxd = 0;lnt mxv = 0;for (i = 1; i <= k; ++ i) {mxv += q.top().val;mxd = max(mxd, q.top().dep);q.pop();}n -= k - 1;ans += mxv;q.push((node){mxv, mxd + 1});}printf("%lld\n%d", ans, q.top().dep - 1);
}
[BZOJ]4198 [NOI2015] 荷马史诗 哈夫曼树相关推荐
- 【Huffman树】【贪心】【NOI 2015】【bzoj 4198】荷马史诗
4198: [Noi2015]荷马史诗 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 127 Solved: 80 Description 追逐影子的 ...
- bzoj 4198 [ Noi 2015 ] 荷马史诗 —— 哈夫曼编码(k叉哈夫曼树)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4198 第一次写哈夫曼树!看了很多博客. 哈夫曼树 & 哈夫曼编码:https://w ...
- [Huffman树] aw149. 荷马史诗(哈夫曼模型+贪心)
文章目录 1. 题目来源 2. 题目解析 1. 题目来源 链接:149. 荷马史诗 2. 题目解析 k叉哈夫曼树问题. n 个叶子节点合并成 1 个点,总共合并减少 n-1 个点,每次合并都会减少 ( ...
- [NOI2015]荷马史诗【哈夫曼编码】
[NOI2015]荷马史诗 推荐一篇题解 (感觉自己讲不清楚所以不如直接粘题解) 观察之后发现这就是哈夫曼编码,于是按照编码方式构造即可. #include <bits/stdc++.h> ...
- (HYSBZ - 4198)荷马史诗
(HYSBZ - 4198)荷马史诗 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 1376 Solved: 725 Description 追逐影子 ...
- NOI2015 荷马史诗
题目链接:戳我 首先看出来这是一个哈夫曼树! 然后就按照这里面哈夫曼树那一点说的,就可以A掉这个题啦 #include<iostream> #include<cstdio> # ...
- P2168 [NOI2015] 荷马史诗(哈夫曼编码树)
传送门 文章目录 题目描述 解析 细节 代码 题目描述 解析 其实就是构造一棵树 另所有带权点都为叶子节点 其代价为权值与深度的乘积 求最小代价及最小代价下的最小深度 可以看成一开始有n棵小树 每次把 ...
- K叉哈夫曼树构造方法 O(N)
带权路径:是树中所有的叶结点的权值乘上其到根结点的路径长度. 哈夫曼树就是带权路径最小的树. 有n个数(即n个叶子节点),构造k叉(k>=2)哈夫曼树的方法: 构造哈夫曼树,其实就是不停的&qu ...
- 荷马史诗【k叉哈夫曼树】
题目描述 追逐影子的人,自己就是影子. --荷马 达达最近迷上了文学. 她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马史诗>. 但是由<奥德赛>和 ...
- 洛谷P2168 荷马史诗 [NOI2015]
题目描述 追逐影子的人,自己就是影子 --荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马史诗>.但是由<奥德赛&g ...
最新文章
- 华裔教授教你写论文2.引言的逻辑解析
- 计算机小知识应用,计算机应用知识(要熟悉电脑的运用,这十个小知识你不能不懂!)...
- 使用Logstash同步MySQL数据库信息到ElasticSearch
- postgresql9.4.4中文手册笔记-9.10 支持枚举函数
- 弱事件 WeakEvent
- 使用Java 8 Streams进行编程对算法性能的影响
- 【大学物理】磁场的高斯定理
- Bootstrap学习笔记--常用标签和类模板
- intllij idea 快捷键 Mac
- div+css 定位浅析
- 算法与数据结构面试题(6)-腾讯面试题
- jeesite中日期插件
- Docker搭建内部知识库(Wiki)
- c语言extern int的作用,c语言之extern
- 使用 HttpWatch 分析 HTTP 协议
- 手把手教你搭建SpringCloud项目(十)集成OpenFeign服务接口调用
- crash工具分析sysdump使用
- 十分钟了解完多目标优化算法
- AVI音视频封装格式学习(五)——h265与PCM合成AVI文件
- There is no getter for property named ‘username‘ in ‘class com.kuang.entity.User‘“
热门文章
- coj #10066新的开始(最小生成树)
- html 给文字加图片背景,如何给文字添加背景图?给文字填充图片背景色的操作方法...
- 计算机网络跳槽自荐信,计算机网络应用专业求职自荐信范文
- M1增速还能指出A股底部吗?
- LTspice基础教程-033.绘制电容阻抗特性曲线
- android obtain,Android Message.obtain() 之 高效原因分析
- Java各种规则引擎
- 花花公子推荐伤感qq日志:乖不哭,我拜你
- c语言工业设计中的案例,工业设计中CMF为什么这么重要?看看设计案例就知道了!...
- ubuntu16.04 独立显卡驱动安装