codevs 1388 砍树
伐木工人米尔科需要砍倒M米长的木材。这是一个对米尔科来说很容易的工作,因为他有一个漂亮的新伐木机,可以像野火一样砍倒森林。不过,米尔科只被允许砍倒单行树木。
米尔科的伐木机工作过程如下:米尔科设置一个高度参数H(米),伐木机升起一个巨大的锯片到高度H,并锯掉所有的树比H高的部分(当然,树木不高于H米的部分保持不变)。米尔科就得到树木被锯下的部分。
例如,如果一行树的高度分别为20,15,10和17米,米尔科把锯片升到15米的高度,切割后树木剩下的高度将是15,15,10和15米,而米尔科将从第1棵树得到5米,从第4棵树得到2米,共得到7米木材。
米尔科非常关注生态保护,所以他不会砍掉过多的木材。这正是他为什么要尽可能高地设定伐木机锯片的原因。帮助米尔科找到伐木机锯片的最大的整数高度H,使得他能得到的木材至少为M米。换句话说,如果再升高1米,则他将得不到M米木材。
第1行:2个整数N和M,N表示树木的数量(1<=N<=1000000),M表示需要的木材总长度(1<=M<=2000000000)
第2行:N个整数表示每棵树的高度,值均不超过1000000000.所有木材长度之和大于M,因此必然有解
第1行:1个整数,表示砍树的最高高度。
5 20
4 42 40 26 46
36
#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 砍树相关推荐
- codevs 1082 线段树区间求和
codevs 1082 线段树练习3 链接:http://codevs.cn/problem/1082/ sumv是维护求和的线段树,addv是标记这歌节点所在区间还需要加上的值. 我的线段树写法在运 ...
- 洛谷P1873 砍树
题目描述 伐木工人米尔科需要砍倒M米长的木材.这是一个对米尔科来说很容易的工作,因为他有一个漂亮的新伐木机,可以像野火一样砍倒森林.不过,米尔科只被允许砍倒单行树木. 米尔科的伐木机工作过程如下:米尔 ...
- 二分答案二题-P1182数列分段II,P1873砍树
T1:P1182T1:P1182T1:P1182 数列分段SectionIISectionIISection II 评测记录:https://www.luogu.org/recordnew/lists ...
- NOIP模拟测试5「星际旅行·砍树·超级树」
星际旅行 0分 瞬间爆炸. 考试的时候觉得这个题怎么这么难, 打个dp,可以被儿子贡献,可以被父亲贡献,还有自环,叶子节点连边可以贡献,非叶子也可以贡献,自环可以跑一回,自环可以跑两回, 关键是同一子 ...
- 建房子 最安全图纸_妄想山海初期该怎么办?砍树狩猎建房子,还能拆别人的房子...
妄想山海还是一个很有趣的游戏,唯一的缺点就是游戏对手机配置要求比较高,手机太差的玩家,就别想那么多了,希望等游戏正式上线,能优化的好一些吧! 在测试中,玩家能体验到游戏中的各种玩法,也是非常的有趣,而 ...
- [Codevs] 1082 线段树练习3
1082 线段树练习 3 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区间[a,b]的 ...
- 二分答案——砍树(洛谷 P1873)
题目选自洛谷P1873 分析:如果句子非常低,可以收集到的木材会更多,以至于超过需要的数量.随着砍树高度逐渐增大,获得的木材会逐渐减少.砍树高度增加到一定程度时,收集到的木材就会开始不够用.因此需要找 ...
- 【洛谷 1873】砍树
题目描述 伐木工人米尔科需要砍倒M米长的木材.这是一个对米尔科来说很容易的工作,因为他有一个漂亮的新伐木机,可以像野火一样砍倒森林.不过,米尔科只被允许砍倒单行树木. 米尔科的伐木机工作过程如下:米尔 ...
- 洛谷 P1873 砍树 (二分答案)
P1873 砍树 题意 给定n个树木,指定一个伐木高度h,h高度以上的部分皆可得到,求想要得到总共数量为m的木头,h最高是多少. 1<=N<=1000000,1<=M<=200 ...
- 洛谷【P1873】 砍树 简单二分解析
题目链接:https://www.luogu.com.cn/problem/P1873 题目描述: 伐木工人米尔科需要砍倒 M 米长的木材.这是一个对米尔科来说很容易的工作,因为他有一个漂亮的新伐木机 ...
最新文章
- java中遍历map的几种方法介绍
- FastDFS 学习笔记
- 计算机学院许斌副院长,马鞍山职业技术学院院长姚国成、马鞍山市卫校校长许斌一行来访我院...
- 【渝粤教育】国家开放大学2018年春季 0064-22T20世纪欧美文学 参考试题
- 使用LinkedList模拟一个堆栈或者队列数据结构
- 思考产品架构的4个视角:业务、场景、数据/功能、实现
- Android之shape属性简介和使用
- html在线布局,HTML 布局
- Linux系统中使用netcat命令的奇技淫巧
- 干货:资深架构师教你一篇文看懂Hadoop
- EMC共模干扰处理,共模扼流圈的应用和选型。
- java微信小程序支付-回调(Jsapi-APIv3)
- html后代选择器和子代选择器,CSS后代选择器与子元素选择器的区别
- Spring框架-AOP
- 前端团队研发效能提升的探索与实践
- 使用springboot写一个记事小账本
- IEC 61850 Compatible OpenPLC for Cyber Attack Case Studies on Smart Substation Systems
- Python 操作Excel(xlrd和xlwt)
- Redis从库失败导致集群概率读不到
- 【Linux】基础常见指令