一位老木匠需要将一根长的木棒切成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
输出最小的体力消耗。
Sample Input
3
3
4
5
Sample Output
19

又是一道stl的问题,而且很考验思维。一开始做这道题,就是单纯的从大的开始减,,只过了样例。后来一想,就算是减下去的大的,也有可能大于另外的数的和,而且如果一开始,从整体往下减,情况很复杂。我们倒过来想一下,如果我们将n段木头拼接成一整根木头,和题意是一样的。而且只把小的加起来就好了。并且加起来的小的也要重新加入到优先队列中。
代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#define ll long long
using namespace std;const int maxx=5e4+10;
int a[maxx];
int n;int main()
{priority_queue<int,vector<int>,greater<int> > q;//小的在上的优先队列while(cin>>n){for(int i=0;i<n;i++) {cin>>a[i];q.push(a[i]);}int ans=0;while(q.size()>1){int x=q.top();q.pop();int y=q.top();q.pop();ans+=(x+y);q.push(x+y);}cout<<ans<<endl;}
}

stl真的很有用。。
努力加油a啊,(o)/~

聪明的木匠(优先队列,思维)相关推荐

  1. 【51Nod - 1117 】聪明的木匠 (贪心,哈夫曼树,时光倒流)

    题干: 一位老木匠需要将一根长的木棒切成N段.每段的长度分别为L1,L2,......,LN(1 <= L1,L2,-,LN <= 1000,且均为整数)个长度单位.我们认为切割时仅在整数 ...

  2. 第Q题:聪明的木匠(队列解答)=======一位老木匠需要将一根长的木棒切成N段...

    一位老木匠需要将一根长的木棒切成N段.每段的长度分别为L1,L2,......,LN(1 <= L1,L2,-,LN <= 1000,且均为整数)个长度单位.我们认为切割时仅在整数点处切且 ...

  3. codeforces 948C / 923B Producing Snow 【优先队列+思维】

    戳我 传送至 Producing Snow 戳我 到参考网站 **题意:**每天产生一堆雪,大小为v[i]个单位体积,然后每天对应一个数值a[i]代表当天温度,然后剩下的每一堆的雪都会减少这个温度的数 ...

  4. Producing Snow CodeForces - 948C 优先队列+思维

    题目链接:https://vjudge.net/problem/CodeForces-948C 转自:https://blog.csdn.net/doncoder/article/details/81 ...

  5. 《聪明的投资者》思维导图

  6. TED+成长性思维+Carol Deweck+The Power of Yet

    TED+成长性思维+Carol Deweck+The Power of Yet fixed mindset growth mindset I heard about a high school in ...

  7. 关于ftp的说法错误的是_斯坦福教授:成长型思维的养成,只需要换个说法,思维是可以训练的!...

    作者:Carol Dweck转载自:SevenEducation(ID:USA7EDU) 斯坦福研究表明,拥有成长型思维的孩子做事不易放弃,更能从过程中享受到乐趣,更容易寻求帮助,复原力更强,也就是更 ...

  8. 终身成长----“成长型思维”

    在斯坦福教育理念中,有一个叫"成长型思维(growth mindset)"的概念,它是相对固定型思维的一种心智模式, 被公认为近几十年里最有影响的心理学研究之一. 研究表明,拥有成 ...

  9. 不会“思维”只会“批判”,谨防网络舆论“怨妇化”

    卫斯理大学校长迈克尔·罗斯(Michael Roth)近日撰文<超越评判式思维>(Beyond Critical Thinking),警告学生不要变成只会批评,不会思维,却还一个个自鸣得意 ...

最新文章

  1. 云栖社区 测试技术社区大群 正式成立!还在等什么,快来加入我们...
  2. 备考3次终于过信息系统项目管理师长篇心路历程
  3. 计算机科学与技术在军中的应用,计算机科学技术的应用及发展趋势
  4. AngularJS中的表达式
  5. 洛谷P2879 [USACO07JAN]区间统计Tallest Cow
  6. python做图片浏览器_保护隐私,用Python打造自己的照片浏览器
  7. Spark Structured Steaming 聚合、watermark 以及 window操作,结合输出模式的研究总结
  8. Spring整合mybatis
  9. 【Java 判断素数的几个方法】简单理解
  10. POI操作Microsoft Office 之 操作PPT简单示例(附源码)
  11. SG3525matlab,基于SG3525的BOOST变换器
  12. IPv6网络流量分析及性能监控
  13. 移动web适配的方式
  14. 【Pandas数据处理100例目录】Python数据分析玩转Excel表格数据
  15. 三国群英传M玩亚服好还是台服好?服务器选择推荐
  16. win10 开机软件自动启动设置
  17. java 内部接口 内部类_Java接口/内部类
  18. 进程、线程、协程、管程
  19. Matlab 绘制多条曲线,方法!
  20. 红米k40可以升级鸿蒙系统吗,红米k40哪个版本系统版本好

热门文章

  1. php返回mysql错误语句_[已解决]php查询mysql返回了错误的结果
  2. 脑电图伪差去除matlab,脑电图伪差的识别方法.ppt
  3. anaconda中gurobi下载_Anaconda是什么?Anconda下载安装教程 - python基础入门(16)
  4. java action 上传文件_Struts2实现单文件或多文件上传功能
  5. Android通过使用系统广播监听网络状态的改变
  6. matlab 设计 18db,基于混沌理论的微弱MPSK信号解调方案设计
  7. 苹果通知推送服务(APNS)关键特性摘要
  8. iOS7 企业应用无法安装应用程序 因为证书无效的解决方案
  9. linux公社 java算法_Java快速排序算法
  10. 安装TCExam经验