博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FZU2219 StarCraft(哈夫曼树)
阅读量:5065 次
发布时间:2019-06-12

本文共 686 字,大约阅读时间需要 2 分钟。

一个工人可以变成两个工人,这样可以画出一颗二叉树,那么就是在叶子上建的建筑。

问题的时间花费,可以看作是这颗二叉树中各个叶子的深度*k+叶子对应建筑耗费时间中的最大值。

容易想到,类似哈夫曼树一样,从叶子出发往上合并,直到连通分量数小于等于m,结点的权值设定为w=max(lw,rw)+k。

1 #include
2 #include
3 #include
4 using namespace std; 5 int main(){ 6 int t,n,m,k,a; 7 scanf("%d",&t); 8 while(t--){ 9 scanf("%d%d%d",&n,&m,&k);10 priority_queue
, greater
> que;11 for(int i=0;i
m){16 int w1=que.top(); que.pop();17 int w2=que.top(); que.pop();18 que.push(w2+k);19 --n;20 }21 int res=0;22 while(!que.empty()){23 res=max(res,que.top());24 que.pop();25 }26 printf("%d\n",res);27 }28 return 0;29 }

 

转载于:https://www.cnblogs.com/WABoss/p/5092046.html

你可能感兴趣的文章
EOS生产区块:解析插件producer_plugin
查看>>
数据库框架的log4j日志配置
查看>>
lintcode-easy-Remove Element
查看>>
LeetCode 343. Integer Break
查看>>
lvs简介
查看>>
小程序动画Animation,高度增加动画形式,图标旋转动画形式
查看>>
PT协程简介
查看>>
LSA算法简单理解
查看>>
然之协同系统3.5(OA+CRM+CASH+TEAM)
查看>>
文件系统损坏导致虚拟机无法正常启动的问题及解决方法
查看>>
C++入门经典-例4.1-声明、定义和使用函数
查看>>
[无向图割点] PKU 1523 SPF
查看>>
JAVA WEB开发环境搭建教程
查看>>
jquery 表单校验
查看>>
【机器学习实战】Machine Learning in Action 代码 视频 项目案例
查看>>
我的第一个.NET Core App Windows系统
查看>>
faceswap深度学习AI实现视频换脸详解
查看>>
Android实例-手机安全卫士(十一)-自定义对话框点击事件处理
查看>>
上海行政区域规划图
查看>>
HDU-4417 Super Mario
查看>>