博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1117 聪明的木匠
阅读量:5312 次
发布时间:2019-06-14

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

 

一位老木匠需要将一根长的木棒切成N段。每段的长度分别为L1,L2,......,LN(1 <= L1,L2,…,LN <= 1000,且均为整数)个长度单位。我们认为切割时仅在整数点处切且没有木材损失。
木匠发现,每一次切割花费的体力与该木棒的长度成正比,不妨设切割长度为1的木棒花费1单位体力。例如:若N=3,L1 = 3,L2 = 4,L3 = 5,则木棒原长为12,木匠可以有多种切法,如:先将12切成3+9.,花费12体力,再将9切成4+5,花费9体力,一共花费21体力;还可以先将12切成4+8,花费12体力,再将8切成3+5,花费8体力,一共花费20体力。显然,后者比前者更省体力。
那么,木匠至少要花费多少体力才能完成切割任务呢?
 
Input
第1行:1个整数N(2 <= N <= 50000)第2 - N + 1行:每行1个整数Li(1 <= Li <= 1000)。
Output
输出最小的体力消耗。
Input示例
3345
Output示例
19 水题,其实就是合并果子
1 #include 
2 #include
3 #include
4 #include
5 6 using namespace std; 7 8 int n,ans; 9 10 priority_queue
,greater
> q;11 12 inline void read(int&x) {13 int f=1;register char c=getchar();14 for(x=0;!isdigit(c);c=='-'&&(f=-1),c=getchar());15 for(;isdigit(c);x=x*10+c-48,c=getchar());16 x=x*f;17 }18 19 int hh() {20 read(n);21 for(int v,i=1;i<=n;++i) read(v),q.push(v);22 for(int x,y;!q.empty();) {23 x=q.top();q.pop();24 y=q.top();q.pop();25 ans+=x+y;26 if(q.empty()) break;27 q.push(x+y);28 }29 printf("%d\n",ans);30 return 0;31 }32 33 int sb=hh();34 int main(int argc,char**argv) {;}
代码

 

 

转载于:https://www.cnblogs.com/whistle13326/p/7562616.html

你可能感兴趣的文章
[转载] redis 的两种持久化方式及原理
查看>>
C++ 删除字符串的两种实现方式
查看>>
ORA-01502: 索引'P_ABCD.PK_WEB_BASE'或这类索引的分区处于不可用状态
查看>>
Java抽象类和接口的比较
查看>>
开发进度一
查看>>
MyBaits学习
查看>>
管道,数据共享,进程池
查看>>
CSS
查看>>
[LeetCode] 55. Jump Game_ Medium tag: Dynamic Programming
查看>>
[Cypress] Stub a Post Request for Successful Form Submission with Cypress
查看>>
程序集的混淆及签名
查看>>
判断9X9数组是否是数独的java代码
查看>>
00-自测1. 打印沙漏
查看>>
UNITY在VS中调试
查看>>
SDUTOJ3754_黑白棋(纯模拟)
查看>>
Scala入门(1)Linux下Scala(2.12.1)安装
查看>>
如何改善下面的代码 领导说了很耗资源
查看>>
Quartus II 中常见Warning 原因及解决方法
查看>>
php中的isset和empty的用法区别
查看>>
Android ViewPager 动画效果
查看>>