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

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

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

 #include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
int main(){
int t,n,m,k,a;
scanf("%d",&t);
while(t--){
scanf("%d%d%d",&n,&m,&k);
priority_queue<int, vector<int>, greater<int> > que;
for(int i=;i<n;++i){
scanf("%d",&a);
que.push(a);
}
while(n>m){
int w1=que.top(); que.pop();
int w2=que.top(); que.pop();
que.push(w2+k);
--n;
}
int res=;
while(!que.empty()){
res=max(res,que.top());
que.pop();
}
printf("%d\n",res);
}
return ;
}

最新文章

  1. 【PHP开发篇】一个统计客户端商机提交的获取IP地址
  2. eclipse中 报出The type javax.servlet.http.HttpServlet cannot be resolved. It is indirect错误
  3. 浅谈float浮动
  4. B/S和C/S测试的区别
  5. RANSAC随机一致性采样算法学习体会
  6. swfobject2.2
  7. 采用handle消息机制实现轮播效果
  8. Android权限设置android.permission完整列表
  9. 如何将Java源代码文件的编码从GBK转为UTF-8?
  10. 通过枚举enum实现单例设计
  11. Java+7入门经典 -1 简介
  12. 最短路径算法——Dijkstra算法
  13. ESXI的安装和部署
  14. Java 插入附件到PDF文档
  15. day13 十三、迭代器、生成器、枚举对象
  16. 【SpringBoot】单元测试进阶实战、自定义异常处理、t部署war项目到tomcat9和启动原理讲解
  17. Django从入门到放弃
  18. 移动WEB开发基础入门
  19. Redis的事物
  20. vue编译环境和线上环境url切换

热门文章

  1. document.documentElement和document.body的区别
  2. mac安装django1.5.4
  3. facedetect
  4. Java和C#运行速度对比:Java比C#快约3倍
  5. Convert Sorted List to Balanced BST
  6. spring3 + mybatis + maven:junit测试错误
  7. Python学习之字典详解
  8. poj1185
  9. Java for LeetCode 075 Sort Colors
  10. Android与后台数据交互学习