【BZOJ4198】[Noi2015]荷马史诗 贪心+堆
【BZOJ4198】[Noi2015]荷马史诗
Description
追逐影子的人,自己就是影子。 ——荷马
Input
输入文件的第 1 行包含 2 个正整数 n,k,中间用单个空格隔开,表示共有 n 种单词,需要使用 k 进制字符串进行替换。
Output
输出文件包括 2 行。
Sample Input
1
1
2
2
Sample Output
2
HINT
题解:好吧我这个蒟蒻不会哈夫曼树,不会哈夫曼编码,我只会合并果子~
一开始,我们认为原来有n堆数,每堆数都有权值,将他们扔到优先队列里,每次取出权值和最小的k堆,将他们合成一堆。再扔回到优先队列里去。但是此题还要求最长单词的长度最小,我们就给每堆数维护一个pair,代表它的(权值和)以及(最多的合并次数)。
由于每次取出k个,扔回去一个,最终剩1个,所以要满足n%(k-1)=1(当k不等于2时),所以如果n%(k-1)不等于1时我们要向堆里扔一些权值为0的数补齐。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
#include <utility>
#define mp(A,B) make_pair(A,B)
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
priority_queue<pll> pq;
ll n,k;
pll x,y,ans;
int main()
{
scanf("%lld%lld",&n,&k);
ll i,a;
for(i=1;i<=n;i++) scanf("%lld",&a),pq.push(mp(-a,0));
while(k!=2&&n%(k-1)!=1) pq.push(mp(0,0)),n++;
while(pq.size()!=1)
{
x=y=mp(0,0);
for(i=1;i<=k;i++)
{
y=pq.top(),pq.pop();
x.first+=y.first,x.second=min(x.second,y.second-1);
}
ans.first-=x.first,ans.second=max(ans.second,-x.second),pq.push(x);
}
printf("%lld\n%lld",ans.first,ans.second);
return 0;
}
【BZOJ4198】[Noi2015]荷马史诗 贪心+堆的更多相关文章
- [BZOJ4198] [Noi2015] 荷马史诗 (贪心)
Description 追逐影子的人,自己就是影子. ——荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马史诗>.但是 ...
- [UOJ#130][BZOJ4198][Noi2015]荷马史诗
[UOJ#130][BZOJ4198][Noi2015]荷马史诗 试题描述 追逐影子的人,自己就是影子. ——荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静 ...
- [BZOJ4198][Noi2015]荷马史诗
4198: [Noi2015]荷马史诗 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 700 Solved: 365[Submit][Status] ...
- BZOJ4198: [Noi2015]荷马史诗(哈夫曼树)
Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1824 Solved: 983[Submit][Status][Discuss] Descripti ...
- 洛谷$P2168\ [NOI2015]$荷马史诗 贪心
正解:贪心 解题报告: 传送门$QwQ$ 昂这个就哈夫曼树板子题鸭$QwQ$,只是从二叉变成多叉了$QwQ$ 考虑用类似合并果子的方法?就从两个变成$k$个了嘛,一样的鸭,然后就做完了$QwQ$ 注意 ...
- BZOJ_4198_[Noi2015]荷马史诗_huffman实现
BZOJ_4198_[Noi2015]荷马史诗_huffman实现 题意: Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马史诗> ...
- 洛谷 P2168 [NOI2015]荷马史诗 解题报告
P2168 [NOI2015]荷马史诗 题目描述 追逐影子的人,自己就是影子 --荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷 ...
- BZOJ4198 & 洛谷2168 & UOJ130:[NOI2015]荷马史诗——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4198 https://www.luogu.org/problemnew/show/P2168 ht ...
- bzoj 4198: [Noi2015]荷马史诗
Description 追逐影子的人,自己就是影子. --荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马史诗>.但是由& ...
随机推荐
- asp.net mvc 5 利用ActionFilterAttribute实现权限过滤
关于c#属性的教程:http://www.runoob.com/csharp/csharp-attribute.html 在asp.net mvc5中,可以利用ActionFilterAttribut ...
- 2018年东北农业大学春季校赛 D wyh的迷宫【搜索】
链接:https://www.nowcoder.com/acm/contest/93/D来源:牛客网 题目描述 给你一个n*m的迷宫,这个迷宫中有以下几个标识: s代表起点 t代表终点 x代表障碍物 ...
- 洛谷—— P1609 最小回文数
https://www.luogu.org/problemnew/show/1609 题目描述 回文数是从左向右读和从右向左读结果一样的数字串. 例如:121.44 和3是回文数,175和36不是. ...
- Arduino可穿戴教程认识ArduinoIDE
Arduino可穿戴教程认识ArduinoIDE 认识ArduinoIDE Arduino IDE在Windows和Linux平台下除了启动方式之外,其他的使用方式基本是一致的.下面简单介绍一下常用的 ...
- poj1185 [NOI2001]炮兵阵地
http://poj.org/problem?id=1185 三维装压dp,压缩上一行状态与本行状态,枚举上两行状态转移 第一维可以滚掉,实际复杂度只枚举符合情况的情况,每行状态不会超过60并非$2^ ...
- iOS 5的文件存储策略应对
苹果在iOS 5系统时,对app的文件存储提出了新的要求.从它的guildline来看,是推荐开发者尽量把app生成的文件放在Caches目录下的.原文如下: Only user-generated ...
- golang--- Redis 操作
1. Redis简介 Redis是一个开源的.使用C语言编写的.支持网络交互的.可基于内存也可持久化的Key-Value数据库. 1.1 特点 支持更多数据类型 和Memcached类似,它支持存 ...
- PCA原理
http://blog.csdn.net/shizhixin/article/details/51181379
- 启动Nginx目录浏览功能及 让用户通过用户名密码认证访问web站点
一.启动Nginx目录浏览功能 [root@abcdocker extra]# cat w.conf server { listen 80; server_name IP地址; location / ...
- NodeJS待重头收拾旧山河(重拾)
介绍 Node.js®是一个基于Chrome V8 JavaScript引擎构建的JavaScript运行时. Node.js使用事件驱动的非阻塞I / O模型,使其轻便且高效. Node.js的包生 ...