bzoj4198 荷马史诗 哈夫曼编码
逐影子的人,自己就是影子。 ——荷马
Input
输入文件的第 1 行包含 2 个正整数 n,k,中间用单个空格隔开,表示共有 n 种单词,需要使用 k 进制字符串进行替换。
Output
输出文件包括 2 行。
Sample Input
4 2
1
1
2
2
Sample Output
12
2
Hint
题解:就是普通将k个小的合并,变成一颗K叉树,为了方便合并,刚开始加入几个辅助点,
防止最后无节点合并(网上貌似都是这样子打的),然后不断合并,深度就是长度,然后就
好了。
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<cstring>
#include<queue>
#define ll long long
#define fzy pair<ll,ll>
using namespace std; int n,k;
priority_queue<fzy,vector<fzy>,greater<fzy> >q; int main()
{
scanf("%d%d",&n,&k);
for (int i=;i<=n;i++)
{
ll x;
scanf("%lld",&x);
q.push(make_pair(x,));
}
while(k>&&n%(k-)!=)
q.push(make_pair(,)),n++;
fzy ans;
ans.first=ans.second=;
while (q.size()!=)
{
fzy x;
x.first=x.second=;
for (int i=;i<=k;i++)
{
fzy now=q.top();
q.pop();
x.first+=now.first;
x.second=max(x.second,now.second+);
}
ans.first+=x.first;
ans.second=max(ans.second,x.second);
q.push(x);
}
printf("%lld\n%lld\n",ans.first,ans.second);
}
bzoj4198 荷马史诗 哈夫曼编码的更多相关文章
- 【BZOJ 4198】[Noi2015]荷马史诗 哈夫曼编码
合并果子加强版....... 哈夫曼树是一种特别的贪心算法,它的作用是使若干个点合并成一棵树,每次合并新建一个节点连接两个合并根并形成一个新的根,使叶子节点的权值乘上其到根的路径长的和最短(等价于每次 ...
- bzoj 4198 [ Noi 2015 ] 荷马史诗 —— 哈夫曼编码(k叉哈夫曼树)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4198 第一次写哈夫曼树!看了很多博客. 哈夫曼树 & 哈夫曼编码:https://w ...
- BZOJ4198: [Noi2015]荷马史诗(哈夫曼树)
Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1824 Solved: 983[Submit][Status][Discuss] Descripti ...
- 洛谷P2168 [NOI2015] 荷马史诗 [哈夫曼树]
题目传送门 荷马史诗 Description 追逐影子的人,自己就是影子. ——荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马 ...
- 【NOI2015】荷马史诗 - 哈夫曼树
题目描述 追逐影子的人,自己就是影子 ——荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马史诗>.但是由<奥德赛&g ...
- bzoj 4198 [Noi2015]荷马史诗——哈夫曼树
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4198 学习一下哈夫曼树.https://www.cnblogs.com/Zinn/p/940 ...
- BZOJ 4198: [Noi2015]荷马史诗 哈夫曼树 k叉哈夫曼树
https://www.lydsy.com/JudgeOnline/problem.php?id=4198 https://blog.csdn.net/chn_jz/article/details/7 ...
- bzoj4198 荷马史诗
关于Huffman树: 大概就是那样子吧. 是这样的:对于最多只能有k个叉的树,我们想要使得∑val(i) * deep(i)最大 那么我们补0后建立小根堆即可. 最典型例题:合并果子. 然后是这个: ...
- AcWing:149. 荷马史诗(哈夫曼编码 + k叉哈夫曼树)
追逐影子的人,自己就是影子. ——荷马 达达最近迷上了文学. 她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马史诗>. 但是由<奥德赛>和<伊 ...
随机推荐
- centos 7 最小安装后 ip配置
安装玩CentOS7 后要进行 ip的配置 vi /etc/sysconfig/network-scripts/ifcfg-eth0 在里面输入 NAME=eth0 HWADDR=XX:XX:XX:X ...
- ORACLE ROWNUM解析
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp53 [align=middle;" align="le ...
- shell变量$(CURDIR),$0,$1,$2,$#含义解释
$(CURDIR): CURDIR是make的内嵌变量, 为当前目录 实例 SRCTREE := $(CURDIR) *$(CURDIR)为当前目录,相当于SRCTREE=./ MKCONFIG ...
- 从聚合数据请求菜谱大全接口数据,解析显示到ListView
- UTF-8笔记170330
unicode 为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言.跨平台进行文本转换.处理的 UTF-8使用可变长度字节来储存 Unicode字符,例如ASCII字母继续使用1字节储 ...
- vmware 遇到 “无法打开内核设备 \\.\Global\vmx86” 解决
问题描述:vmware没有正常关闭,再次打开使用时蓝屏,在安全模式下再次打开不会蓝屏,但提示"无法打开内核设备 \.\Global\vmx86: 系统找不到指定的文件,你想要安装VMware ...
- 关于C语言
对于C语言方面 觉得自己在数组方面比较薄弱,寒假之前也借了一些书关于C语言的希望能在家里好好看看,也看了差不多两三百页,视频没怎么看,看了七八集,希望学一些深入的语法或者说是算法.
- 201521123015 《Java程序设计》第6周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 2. 书面作业 1.clone方法 1.1 Object对 ...
- 201521123053 <<Java基本语法与类库>>第二周
1.本周学习总结 这是第二周学习了,还是感觉吃力,慢慢来吧 .知识总是一点一点进到脑子里,虽然头小,但总会进来不是! 知识储备: A.整形变量按照长度分为byte.short.int.long. ...
- 201521123057 《Java程序设计》第10周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异常.多线程 1.finally 题目4-2 1.1 截图你的提交结果(出 ...