割木块
来源:互联网 发布:mpv mac 字幕 编辑:程序博客网 时间:2024/05/01 08:41
Description:
Alice准备在森林里面建一栋小木屋,现在他有一根长度为n的木块,需要把它们切割成m根长度分别为l1,l2,…,lm的更小的木块( sigma(li) = n )。而Alice每次只能将之前的某一块切成两块,每次切割木块会消耗Alice的体力,消耗的体力值为当前待切割的木块的长度。现在Alice请聪明的你帮忙,求Alice至少要消耗多少体力。
Input:
题目包含多组数据。第一行为一个整数m(1<=m<=100000),第二行为m个整数,分别表示m根长度分别为l1,l2,…,lm的更小的木块(1<=li<=65536)。
Output:
一个整数,表示Alice至少要消耗多少体力。
Sample Input:
3
8 5 8
4
2 3 4 4
Sample Output:
34
26
#include<cstdio>#include<queue>#include<algorithm>using namespace std;typedef long long LL;int main(){ int n,t; while(~scanf("%d",&n)){ priority_queue<int,vector<int>,greater<int> >work; // 两个>中间的空格不能省略for(int i=0;i<n;i++){ scanf("%d",&t); work.push(t); } LL ans=0; while(work.size()>=2){ int min1=work.top();//这是第一小的 work.pop();//让第一小的离开队列 int min2=work.top();//这是第二小的 work.pop();//让第二小的离开队列 ans+=min1+min2;//这次合并用了这么多体力 work.push(min1+min2);//把最小的两个合并成新的,再加入进去 } printf("%lld\n",ans); } return 0;}
0 0
- 割木块
- 木块砌墙
- 木块砌墙
- 木块砌墙
- 木块问题
- 木块砌墙
- 木块问题
- 1992 装木块问题
- 装木块问题
- poj3314 堆木块 模拟
- uva 101木块游戏
- 数数小木块
- 数数小木块
- 木块砌墙---解题报告
- 数数小木块
- 数数小木块
- 木块砌墙-题目
- UVAOJ 101 移动木块
- 基于浏览器请求的国际化实现
- Java动态代理详解
- 生成一个C++对象的成本
- CCF第一题--折点计数
- 21. Merge Two Sorted Lists(Linked List-Easy)
- 割木块
- 学习淘淘商城第七课(SSM框架整合之逆向工程)
- 关于Java面向对象基本特征的一些理解
- Linux下Tomcat的安装配置
- JavaWeb跨域访问问题
- Python 编码规范
- 【大惊喜】网易云短信服务全面降价啦!
- 基于HttpSession的国际化实现
- NLP︱LDA主题模型的应用难题