题目链接 : 洛谷P1873 [COCI 2011/2012 #5] EKO / 砍树

文章目录

  • 前言
  • 一、题目
    • 题目描述
    • 输入格式
    • 输出格式
    • 输入输出样例
    • 说明/提示
  • 二、代码

前言

第一次写博客,趁着暑假时间多, 写个博客记录下做题过程。
这道题其实就是用个二分模板套上去就能AC,本题重点在于左右区间范围怎么限定。


一、题目

题目描述

输入格式

输出格式

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

输入输出样例

说明/提示

二、代码

#include<iostream>
#include<cstring>
#include <algorithm>
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define ll long long //用ll来表示long long
#define endl '\n'using namespace std;const int N = 1e6 + 5 ;int n;
ll nd_sum; //表示需要的木材总长度
int a[N]; // 用来记录每棵树的高度 bool check(int mid) { //mid表示锯片的高度 // sum表示锯掉所有高度为mid及以下的树木后,所有树木总剩余高度的和 ll sum = 0; //int可能会爆,建议用long long for (int i = 0; i < n; i++) {//当树木高度高于锯片的高度时才锯//如果树木的高度还没有锯片的高度高,根据题意,那么就不用锯了 if (a[i] > mid ) {  //这里也可以取=, 表示锯片高度与该树木高度相等, 结果为0 //当树木高度高于锯片高度时,sum累加其差,所得结果为木材总长度 sum += a[i] - mid;  }}//如果木材总长小于所需木材总长,说明锯片高度mid过高,导致总木材长度过低//所以应该返回true, 让 r变小,使下一次的mid值变小,反之同理 return sum < nd_sum;
}void binarySearch() {ll l = 0, r = 0x3f3f3f3f; //r也可取木材中高度最高的 while (l <= r) {ll mid = l + (r - l) / 2; //等同于(l + r) / 2,可防止爆数据if(check(mid)) r = mid - 1;else l = mid + 1;}cout << r;
}int main() {IOS ;cin >> n >> nd_sum;for (int i = 0; i < n; i++) {cin >> a[i];}sort(a, a + n);binarySearch();return 0;
}

谢谢 !!!

洛谷P1873 [COCI 2011/2012 #5] EKO / 砍树(二分法)相关推荐

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

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

  2. 【C++】洛谷P1873 [COCI 2011/2012 #5] EKO / 砍树

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

  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. windows10下pip安装速度慢的解决办法
  2. 内核分析PE获取DLL导出函数地址
  3. java的lookAndfeel_java-LookAndFeel行为之间的区别
  4. Leetcode PHP题解--D29 973. K Closest Points to Origin
  5. 基于JAVA+SpringBoot+Mybatis+Vue+MYSQL的在线考试系统
  6. Chrome安装Vue.js devtool 4.1.4_0
  7. ULN2003的使用
  8. 智能家居如何让消费者心甘情愿地买单
  9. macos 管理员权限 黑苹果_Mac OS X 黑苹果系统安装驱动Kext方法
  10. 天文软件ds9对图片调整颜色和两张图片坐标自动匹对
  11. 编程小白的第一本Python入门书学习笔记
  12. 深度网络自适应DCC算法
  13. Trying to access array offset on value of type int
  14. 120日均线金叉250日均线是大牛市来临的重要信号
  15. 用计算机制作母亲贺卡,母亲节电子贺卡制作
  16. C++判断输入内容是否为整数
  17. 最新官方新浪短网址API接口分享-附代码调用演示
  18. 通过app打包修改app名称
  19. noip2014 生活大爆炸版 石头剪刀布 (模拟)
  20. PTA 7-154 置点不动产——认真学习,努力工作买买房子吧

热门文章

  1. 【Java】设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声。
  2. 如何注册腾讯云个人账号(图文教程)
  3. int和Interger区别
  4. 用电预付费系统在工业园区物业管理中的应用
  5. 从控制台输入一个数字,判断这个数字是不是一个质数
  6. Excel中按多个符号进行分列
  7. 电脑如何登录两个微信
  8. 学生给老师的一道思考题
  9. mysql emoy表情_“笑哭”emoji表情过时了,一波“捂脸”大军正在路上
  10. java关于int极限值的测试