「NOI2015」荷马史诗 (k叉huffman树/k叉合并果子)
2024-09-05 03:54:55
是个多叉huffman树,思想类比合并果子。
具体见 CrazyDave 的博客
CODE
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
struct node {
LL w, h;
node(){}
node(LL w, LL h):w(w), h(h){}
inline bool operator <(const node &o)const {
return w == o.w ? h > o.h : w > o.w;
}
};
priority_queue<node>q;
int n, k;
int main () {
scanf("%d%d", &n, &k);
LL x, ans = 0;
for(int i = 1; i <= n; ++i) {
scanf("%lld", &x);
q.push(node(x, 1));
}
int cnt = ((k-1) - (n-1)%(k-1)) % (k-1);
while(cnt--) q.push(node(0, 1));
cnt = q.size();
while(cnt > 1) {
LL w = 0, h = 0;
for(int i = 1; i <= k; ++i)
w += q.top().w, h = max(h, q.top().h), q.pop();
ans += w;
q.push(node(w, h+1));
cnt -= k-1;
}
printf("%lld\n%lld\n", ans, q.top().h-1);
}
最新文章
- Coping with the TCP TIME-WAIT state on busy Linux servers
- MySQL备份命令mysqldump参数说明与示例
- C# 文件读取(二)
- 做 fzu oj 1106 题目学到的
- CI_Autocomplete_2.0.php轻松实现Bebeans与Codeigniter的智能提示
- [PeterDLax著泛函分析习题参考解答]第2章 线性映射
- 一个PHP常用表单验证类(基于正则)
- c语言构建动态数组
- 读取Oracle表结构数据
- 第三十五节,json数据类型转换字符串模块
- VHDL学习记录
- Linux特殊字符用法、后台命令管理
- Masonry中的mas_makeConstraints方法
- 从Linux 与 Unix 异同,看开源世界的发展!
- firewall-cmd 常用命令
- python操作三大主流数据库(1)python操作mysql①windows环境中安装python操作mysql数据库的MySQLdb模块mysql-client
- matlab与python读取tiff文件
- JS开发工具WebStorm使用快捷键
- table滑块
- 国内高速Maven仓库
热门文章
- if(";\v";==";v";)来判断IE浏览器
- [转帖]CPU时间片
- JAVA_split 字符串按照 . 分割
- gdb 常用命令总结(精优)
- C++Primer 5th Chap8 The IO Library
- 嵌入式Linux学习笔记之第一阶段---基础篇
- Eclipse一些技巧
- Aso.Net Core 的配置系统Configuration--转
- 解决 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 以及MyBatis批量加载xml映射文件的方式
- (一)SpringMvc简介以及第一个springmvc工程