时间限制: 1 s
 空间限制: 256000 KB
 题目等级 : 黄金 Gold
题目描述 Description

伐木工人米尔科需要砍倒M米长的木材。这是一个对米尔科来说很容易的工作,因为他有一个漂亮的新伐木机,可以像野火一样砍倒森林。不过,米尔科只被允许砍倒单行树木。

米尔科的伐木机工作过程如下:米尔科设置一个高度参数H(米),伐木机升起一个巨大的锯片到高度H,并锯掉所有的树比H高的部分(当然,树木不高于H米的部分保持不变)。米尔科就得到树木被锯下的部分。

例如,如果一行树的高度分别为20,15,10和17米,米尔科把锯片升到15米的高度,切割后树木剩下的高度将是15,15,10和15米,而米尔科将从第1棵树得到5米,从第4棵树得到2米,共得到7米木材。

米尔科非常关注生态保护,所以他不会砍掉过多的木材。这正是他为什么要尽可能高地设定伐木机锯片的原因。帮助米尔科找到伐木机锯片的最大的整数高度H,使得他能得到的木材至少为M米。换句话说,如果再升高1米,则他将得不到M米木材。

输入描述 Input Description

第1行:2个整数N和M,N表示树木的数量(1<=N<=1000000),M表示需要的木材总长度(1<=M<=2000000000)

第2行:N个整数表示每棵树的高度,值均不超过1000000000.所有木材长度之和大于M,因此必然有解

输出描述 Output Description

第1行:1个整数,表示砍树的最高高度。

样例输入 Sample Input

5 20

4 42 40 26 46

样例输出 Sample Output

36

数据范围及提示 Data Size & Hint
二分做法 
#include <iostream>
#include <cstring>
#include <cstdio>
#define c(a,b) a=max(a,b)
#define d(a,b) a=min(a,b)
#define ll long long
using namespace std;ll ly=0,minn,maxn,n,m,i,j,high[1000001];
ll qr()
{ll x=0,f=1;char ch=getchar();while(ch>'9'||ch<'0'){if(ch=='-') f=-1;ch=getchar();}while(ch>='0'&&ch<='9') {x=x*10+(ll)ch-48;ch=getchar();}return x*f;
}
void ef(ll l,ll r)
{while(l<r-1){ll h=0;ll mid=(l+r)>>1;for(i=0;i<n;++i){if(high[i]>mid)h+=high[i]-mid;}if(h<m) r=mid;else {c(ly,mid);l=mid;}}
}
int main()
{ios::sync_with_stdio(false);n=qr();m=qr();for(i=0;i<n;++i){high[i]=qr();c(maxn,high[i]);d(minn,high[i]);}ef(minn,maxn);cout<<ly;
}

传送门 点此展开

转载于:https://www.cnblogs.com/ruojisun/p/6242017.html

codevs 1388 砍树相关推荐

  1. codevs 1082 线段树区间求和

    codevs 1082 线段树练习3 链接:http://codevs.cn/problem/1082/ sumv是维护求和的线段树,addv是标记这歌节点所在区间还需要加上的值. 我的线段树写法在运 ...

  2. 洛谷P1873 砍树

    题目描述 伐木工人米尔科需要砍倒M米长的木材.这是一个对米尔科来说很容易的工作,因为他有一个漂亮的新伐木机,可以像野火一样砍倒森林.不过,米尔科只被允许砍倒单行树木. 米尔科的伐木机工作过程如下:米尔 ...

  3. 二分答案二题-P1182数列分段II,P1873砍树

    T1:P1182T1:P1182T1:P1182 数列分段SectionIISectionIISection II 评测记录:https://www.luogu.org/recordnew/lists ...

  4. NOIP模拟测试5「星际旅行·砍树·超级树」

    星际旅行 0分 瞬间爆炸. 考试的时候觉得这个题怎么这么难, 打个dp,可以被儿子贡献,可以被父亲贡献,还有自环,叶子节点连边可以贡献,非叶子也可以贡献,自环可以跑一回,自环可以跑两回, 关键是同一子 ...

  5. 建房子 最安全图纸_妄想山海初期该怎么办?砍树狩猎建房子,还能拆别人的房子...

    妄想山海还是一个很有趣的游戏,唯一的缺点就是游戏对手机配置要求比较高,手机太差的玩家,就别想那么多了,希望等游戏正式上线,能优化的好一些吧! 在测试中,玩家能体验到游戏中的各种玩法,也是非常的有趣,而 ...

  6. [Codevs] 1082 线段树练习3

    1082 线段树练习 3  时间限制: 3 s  空间限制: 128000 KB  题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区间[a,b]的 ...

  7. 二分答案——砍树(洛谷 P1873)

    题目选自洛谷P1873 分析:如果句子非常低,可以收集到的木材会更多,以至于超过需要的数量.随着砍树高度逐渐增大,获得的木材会逐渐减少.砍树高度增加到一定程度时,收集到的木材就会开始不够用.因此需要找 ...

  8. 【洛谷 1873】砍树

    题目描述 伐木工人米尔科需要砍倒M米长的木材.这是一个对米尔科来说很容易的工作,因为他有一个漂亮的新伐木机,可以像野火一样砍倒森林.不过,米尔科只被允许砍倒单行树木. 米尔科的伐木机工作过程如下:米尔 ...

  9. 洛谷 P1873 砍树 (二分答案)

    P1873 砍树 题意 给定n个树木,指定一个伐木高度h,h高度以上的部分皆可得到,求想要得到总共数量为m的木头,h最高是多少. 1<=N<=1000000,1<=M<=200 ...

  10. 洛谷【P1873】 砍树 简单二分解析

    题目链接:https://www.luogu.com.cn/problem/P1873 题目描述: 伐木工人米尔科需要砍倒 M 米长的木材.这是一个对米尔科来说很容易的工作,因为他有一个漂亮的新伐木机 ...

最新文章

  1. java中遍历map的几种方法介绍
  2. FastDFS 学习笔记
  3. 计算机学院许斌副院长,马鞍山职业技术学院院长姚国成、马鞍山市卫校校长许斌一行来访我院...
  4. 【渝粤教育】国家开放大学2018年春季 0064-22T20世纪欧美文学 参考试题
  5. 使用LinkedList模拟一个堆栈或者队列数据结构
  6. 思考产品架构的4个视角:业务、场景、数据/功能、实现
  7. Android之shape属性简介和使用
  8. html在线布局,HTML 布局
  9. Linux系统中使用netcat命令的奇技淫巧
  10. 干货:资深架构师教你一篇文看懂Hadoop
  11. EMC共模干扰处理,共模扼流圈的应用和选型。
  12. java微信小程序支付-回调(Jsapi-APIv3)
  13. html后代选择器和子代选择器,CSS后代选择器与子元素选择器的区别
  14. Spring框架-AOP
  15. 前端团队研发效能提升的探索与实践
  16. 使用springboot写一个记事小账本
  17. IEC 61850 Compatible OpenPLC for Cyber Attack Case Studies on Smart Substation Systems
  18. Python 操作Excel(xlrd和xlwt)
  19. Redis从库失败导致集群概率读不到
  20. 【Linux】基础常见指令

热门文章

  1. oracle优化查询前几条,一个查询优化的分析调整全过程!很值得一看
  2. 【汇编语言】通用数据处理指令——数据传送类指令
  3. Spark sample入门到精通
  4. Hive复杂数据类型之array
  5. MR Shuffle流程 入门
  6. SparkSQL统一数据的加载与落地
  7. HDU 2256Problem of Precision(矩阵快速幂)
  8. Springmvc 服务器端文件下载
  9. 5个Linux 服务器发行版你值得拥有
  10. [LeetCode系列] 跳跃问题II