[COCI 2011/2012 #5] EKO / 砍树

题目描述

伐木工人 Mirko 需要砍 MMM 米长的木材。对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一般砍伐森林。不过,Mirko 只被允许砍伐一排树。

Mirko 的伐木机工作流程如下:Mirko 设置一个高度参数 HHH(米),伐木机升起一个巨大的锯片到高度 HHH,并锯掉所有树比 HHH 高的部分(当然,树木不高于 HHH 米的部分保持不变)。Mirko 就得到树木被锯下的部分。例如,如果一排树的高度分别为 20,15,1020,15,1020,15,10 和 171717,Mirko 把锯片升到 151515 米的高度,切割后树木剩下的高度将是 15,15,1015,15,1015,15,10 和 151515,而 Mirko 将从第 111 棵树得到 555 米,从第 444 棵树得到 222 米,共得到 777 米木材。

Mirko 非常关注生态保护,所以他不会砍掉过多的木材。这也是他尽可能高地设定伐木机锯片的原因。请帮助 Mirko 找到伐木机锯片的最大的整数高度 HHH,使得他能得到的木材至少为 MMM 米。换句话说,如果再升高 111 米,他将得不到 MMM 米木材。

输入格式

第 111 行 222 个整数 NNN 和 MMM,NNN 表示树木的数量,MMM 表示需要的木材总长度。

第 222 行 NNN 个整数表示每棵树的高度。

输出格式

111 个整数,表示锯片的最高高度。

样例 #1

样例输入 #1

4 7
20 15 10 17

样例输出 #1

15

样例 #2

样例输入 #2

5 20
4 42 40 26 46

样例输出 #2

36

提示

对于 100%100\%100% 的测试数据,1≤N≤1061\le N\le10^61≤N≤106,1≤M≤2×1091\le M\le2\times10^91≤M≤2×109,树的高度 <109<10^9<109,所有树的高度总和 >M>M>M。

思路: 二分答案,每次二分后判断当前答案下可获得的木头长度,若木头长度大于m则调整二分下边界,否则调整下边界

代码:

#include <bits/stdc++.h>
using namespace std;
long int tree[1000005];
int main()
{   long int n, m, st = 0, ed = 1e9, ans;cin >> n >> m;for(int i = 1; i <= n; i++){cin >> tree[i];}while(st <= ed){long int height = 0, mid = (st + ed) / 2;;for(int i = 1; i <= n; i++){height += tree[i] - min(tree[i], mid);}if(height >= m) st = mid + 1, ans = mid;else ed = mid - 1;}cout << ans;return 0;
}

【C++】洛谷P1873 [COCI 2011/2012 #5] EKO / 砍树相关推荐

  1. 洛谷 P1873 [COCI 2011/2012 #5] EKO / 砍树

    题目传送门: 洛谷 P1873 [COCI 2011/2012 #5] EKO / 砍树 题目描述 伐木工人 Mirko 需要砍 M 米长的木材.对 Mirko 来说这是很简单的工作,因为他有一个漂亮 ...

  2. 洛谷P1873 [COCI 2011/2012 #5] EKO / 砍树(二分法)

    题目链接 : 洛谷P1873 [COCI 2011/2012 #5] EKO / 砍树 文章目录 前言 一.题目 题目描述 输入格式 输出格式 输入输出样例 说明/提示 二.代码 前言 第一次写博客, ...

  3. 洛谷 P1873 [COCI 2011/2012 #5] EKO / 砍树 二分

    # [COCI 2011/2012 #5] EKO / 砍树 ## 题目描述 伐木工人 Mirko 需要砍 $M$ 米长的木材.对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如 ...

  4. 洛谷P1873 [COCI 2011/2012 #5] EKO / 砍树

    题目描述 伐木工人 Mirko 需要砍 MM 米长的木材.对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一般砍伐森林.不过,Mirko 只被允许砍伐一排树. Mirko ...

  5. 《二分答案》—— P1873 [COCI 2011/2012 #5] EKO / 砍树

    [COCI 2011/2012 #5] EKO / 砍树 题目描述 伐木工人 Mirko 需要砍 M M M 米长的木材.对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一 ...

  6. P1873 [COCI 2011/2012 #5] EKO / 砍树

    题目描述 伐木工人 Mirko 需要砍 M 米长的木材.对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一般砍伐森林.不过,Mirko 只被允许砍伐一排树. Mirko 的 ...

  7. 整数二分 P1873 [COCI 2011/2012 #5] EKO / 砍树

    题目描述 伐木工人 Mirko 需要砍 MMM 米长的木材.对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一般砍伐森林.不过,Mirko 只被允许砍伐一排树. Mirko ...

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

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

  9. 信息学奥赛一本通 1107:校门外的树 | 1931:【05NOIP普及组】校门外的树 | OpenJudge NOI 1.6 06 | 洛谷 P1047 [NOIP2005 普及组] 校门外的树

    [题目链接] ybt 1107:校门外的树 ybt 1931:[05NOIP普及组]校门外的树 OpenJudge NOI 1.6 06:校门外的树 洛谷 P1047 [NOIP2005 普及组] 校 ...

最新文章

  1. 这样系统的学习分布式,他日必成大器!
  2. paramiko监控 windows服务器 被监控服务器只需要安装openssh服务即可基于wmic完成大部分监控...
  3. Linux虚拟机ip为127.0.0.1的处理
  4. 使用canvas实现360水球波动
  5. boost::math::geometric相关用法的测试程序
  6. 基于 Blazor 打造一款实时字幕
  7. 用C#生成不重复的随机数
  8. 链接选项-rpath的一个问题记录
  9. 数据来源渠道及采集工具_【公示公告】涡阳县村级光伏扶贫电站数据采集器更换采购安装项目单一来源采购标前公示...
  10. ubuntu 20.10 安装万能五笔(ibus模式)
  11. 【latex】.tex文件去tracked changes
  12. zzuli OJ 2331:小新同学的智商
  13. python文字教学_【纯文本教程】大学专科的Python基础开发课?p=17
  14. 【CodeForces】[372A]Counting Kangaroos is Fun
  15. VR全景图在家装行业的应用及发展
  16. 教老婆学java系列之奇妙的数据结构四
  17. 红米4A手机刷开发版rom并且获取root权限
  18. 云效告诉你如何进行研发排期,高效达成目标
  19. MATLAB:图片缩放
  20. 苹果皮被“山寨”:iPhone也能支持4G网络

热门文章

  1. Linux —— 进程间通信
  2. 全差分放大器(FDA)的基本知识
  3. 产品学习笔记(产品分析报告篇)
  4. 测试-嵌入式图床外链
  5. CDIO项目:一级倒立摆建模与仿真
  6. 怎么可以修改pr基本图形中的文字_AE特效文字转PR图形预设
  7. Wordpress商品详情页新增Buy on amazon/ebay跳转按钮
  8. 公司MES项目现场落地实施总结
  9. 智能汽车发展战略-思维导图版本
  10. Unity AzureKinect Ar贴纸