Description

ZB loves playing StarCraft and he likes Zerg most!

One day, when ZB was playing SC2, he came up with an idea:

He wants to change the queen’s ability, the queen’s new ability is to choose a worker at any time, and turn it into an egg, after K units of time, two workers will born from that egg. The ability is not consumed, which means you can use it any time without cooling down.

Now ZB wants to build N buildings, he has M workers initially, the i-th building costs t[i] units of time, and a worker will die after he builds a building. Now ZB wants to know the minimum time to build all N buildings.

Input

The first line contains an integer T, meaning the number of the cases. 1 <= T <= 50.

For each test case, the first line consists of three integers N, M and K. (1 <= N, M <= 100000, 1 <= K <= 100000).

The second line contains N integers t[1] … t[N] (1 <= t[i] <= 100000).

Output

For each test case, output the answer of the question.

Sample Input

2
3 1 1
1 3 5
5 2 2
1 1 1 1 10

Sample Output

6
10

题意

有 m 个员工,一共要建 n 个建筑,每个建筑需要 ti 的时间,一个员工只能建一个建筑,对于某个员工可以用 k 的时间将其一分为二,求建完 n 个建筑的最少时间。

思路

  • 当初始员工数目 m 大于等于建筑数目 n ,显然结果是所有建筑建筑时间的最大值。
  • 对于其他情况,我们需要工人总共分裂 m-n 次,此时便需要考虑哪两个建筑是由一个工人分裂以后解决的,显然可以像类似于哈夫曼树那样找当前状态下两个建筑时间最小的,然后将较大者 +k 放回树中,较小者去除。(因为较大者 + k > 较小者)

代码

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <queue>
#define IO ios::sync_with_stdio(false);\cin.tie(0);\cout.tie(0);
using namespace std;
const int maxn = 1e6+10;
const int mod = 1e9+7;
typedef long long LL;int n,m,k;
priority_queue<int,vector<int>,greater<int> > sk;
int main()
{IO;int T;cin>>T;while(T--){while(!sk.empty())sk.pop();cin>>n>>m>>k;for(int i=0; i<n; i++){int x;cin>>x;sk.push(x);}int some = n - m;while(some>0){sk.pop();sk.push(sk.top()+k);sk.pop();some--;}while(sk.size()>1)sk.pop();cout<<sk.top()<<endl;}return 0;
}

FZU 2219 StarCraft (哈夫曼树)相关推荐

  1. Python---哈夫曼树---Huffman Tree

    今天要讲的是天才哈夫曼的哈夫曼编码,这是树形数据结构的一个典型应用. !!!敲黑板!!!哈夫曼树的构建以及编码方式将是我们的学习重点. 老方式,代码+解释,手把手教你Python完成哈夫曼编码的全过程 ...

  2. 优先级队列实现哈夫曼树的编码和译码

    //优先级队列实现的哈夫曼树的编码和译码 #include<iostream> #include<queue> #include<string> using nam ...

  3. HDU1053 Entropy 哈夫曼树

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1053 认真读题,别怕题长,此题考查的就是哈夫曼树并求出最小编码值,注意每一次要将数组清0,否则会出错! ...

  4. 数据结构与算法(6-5)二叉树的应用--哈夫曼树与哈夫曼编码

    目录 哈夫曼编码(最优二叉树) 一.优势:缩短电文长度 二.思想: 三.过程: 四.图解实现过程: 五.总代码 哈夫曼编码(最优二叉树) 一.优势:缩短电文长度 二.思想: 获取每个字符出现的频率,用 ...

  5. java振动数据压缩_【数据结构-Java】最佳实践-数据压缩(使用赫夫曼树)

    一.需求 将给出的一段文本,比如 "i like like like java do you like a java" , 根据前面的讲的赫夫曼编码原理,对其进行数据压缩处理 二. ...

  6. 哈夫曼树的java实现_java实现哈夫曼树

    哈夫曼译码,就是将输入的译码还原成对应的字符. 抽象的算法描述:将建立哈夫曼树.实现哈夫曼编码.哈夫曼译码都定义成 子函数的的形式, 然后在主函数中调用它们...... 数据结构课程设计设计题目: 哈 ...

  7. 哈夫曼树的生成及哈夫曼编码

    首先构造哈夫曼树结构体,初始化哈夫曼树的四个无符号整型域,输入文本,统计各个字符的权值,然后构建哈夫曼树,从根到叶子逆向求哈夫曼树的编码. #include"stdio.h" #i ...

  8. 赫夫曼编码(基于赫夫曼树的实现)

    上一篇文章中我们探讨了赫夫曼树的基本原理和构造方式,而赫夫曼编码可以很有效地压缩数据(通常可以节约20%-90%的空间,具体压缩率依赖于数据的特性). 名词:定长编码,边长编码,前缀码(装B用的) 定 ...

  9. 赫夫曼树(哈夫曼树)

    赫夫曼树->赫夫曼编码 在数据膨胀.信息爆炸的今天,数据压缩的意义不言而喻. 一个字节8位 赫夫曼编码压缩-无损压缩 可以看成成绩的排布.成绩是70-90之间占有70%,所以以下两个数据结构优化 ...

最新文章

  1. vmware vsphere 虚拟化之安装esxi
  2. 消除 Xcode7 中 directory not found for option 'xxxx' 警告
  3. 搜索重复代码_通过MappedByteBuffer搜索大文件
  4. stm32串口传输数据第一个数据被吞_STM32串口第一个字节丢失问题的分析过程
  5. 使用 jQuery.Pin 垂直滚动时固定导航
  6. ECshop安装及报错解决方案总结
  7. 【Leetcode - 172】阶乘后的零(思维)
  8. python函数控制词典_Python 基础之集合相关操作与函数和字典相关函数
  9. 【前端】第一章 前端三要素、前后端分离的演变史
  10. 使用扩展欧几里得算法对逆元求解
  11. C++:显示每年的各月份第一天是星期几
  12. Flash | 用几张帧图创建逐帧动画元件并插入场景层的一般步骤
  13. 第九届信号与图像处理国际学术研讨会(CSIP 2022)
  14. 搭建Hadoop集群后一直使用的start-all.sh到底是个什么操作
  15. Win32学习笔记 - WndProc回调函数
  16. 如何通俗理解Word2Vec
  17. 了解电商行业项目背景
  18. 赴北京美国大使馆L1签证面签记
  19. 认证 (authentication) 和授权 (authorization) 的区别.md
  20. O(n*logn)排序算法的总结

热门文章

  1. Nodejs版本更新
  2. 索尼新动作,联手Nolan推出AR摩托车头盔
  3. scrapy_AttributeError: 'generator' object has no attribute 'meta'''_'generator' 'dont_filter'
  4. 基于GUI混沌系统图像加密解密
  5. 美国证券业托管和清算机构的发展与现状
  6. 公众号运营,如何快速找到内容定位?
  7. 【读书笔记】好好思考-成甲
  8. 微信小店二次开发_怎么吧微信小店装修的更好看
  9. Vitalik Buterin:我的 40 升背包旅行指南
  10. 介绍一下xgb_xgboost实战,一篇就好