洛谷P1873 [COCI 2011/2012 #5] EKO / 砍树(二分法)
题目链接 : 洛谷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 / 砍树(二分法)相关推荐
- 洛谷 P1873 [COCI 2011/2012 #5] EKO / 砍树
题目传送门: 洛谷 P1873 [COCI 2011/2012 #5] EKO / 砍树 题目描述 伐木工人 Mirko 需要砍 M 米长的木材.对 Mirko 来说这是很简单的工作,因为他有一个漂亮 ...
- 【C++】洛谷P1873 [COCI 2011/2012 #5] EKO / 砍树
[COCI 2011/2012 #5] EKO / 砍树 题目描述 伐木工人 Mirko 需要砍 MMM 米长的木材.对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一般砍 ...
- 洛谷 P1873 [COCI 2011/2012 #5] EKO / 砍树 二分
# [COCI 2011/2012 #5] EKO / 砍树 ## 题目描述 伐木工人 Mirko 需要砍 $M$ 米长的木材.对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如 ...
- 洛谷P1873 [COCI 2011/2012 #5] EKO / 砍树
题目描述 伐木工人 Mirko 需要砍 MM 米长的木材.对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一般砍伐森林.不过,Mirko 只被允许砍伐一排树. Mirko ...
- 《二分答案》—— P1873 [COCI 2011/2012 #5] EKO / 砍树
[COCI 2011/2012 #5] EKO / 砍树 题目描述 伐木工人 Mirko 需要砍 M M M 米长的木材.对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一 ...
- P1873 [COCI 2011/2012 #5] EKO / 砍树
题目描述 伐木工人 Mirko 需要砍 M 米长的木材.对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一般砍伐森林.不过,Mirko 只被允许砍伐一排树. Mirko 的 ...
- 整数二分 P1873 [COCI 2011/2012 #5] EKO / 砍树
题目描述 伐木工人 Mirko 需要砍 MMM 米长的木材.对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一般砍伐森林.不过,Mirko 只被允许砍伐一排树. Mirko ...
- 二分答案——砍树(洛谷 P1873)
题目选自洛谷P1873 分析:如果句子非常低,可以收集到的木材会更多,以至于超过需要的数量.随着砍树高度逐渐增大,获得的木材会逐渐减少.砍树高度增加到一定程度时,收集到的木材就会开始不够用.因此需要找 ...
- 信息学奥赛一本通 1107:校门外的树 | 1931:【05NOIP普及组】校门外的树 | OpenJudge NOI 1.6 06 | 洛谷 P1047 [NOIP2005 普及组] 校门外的树
[题目链接] ybt 1107:校门外的树 ybt 1931:[05NOIP普及组]校门外的树 OpenJudge NOI 1.6 06:校门外的树 洛谷 P1047 [NOIP2005 普及组] 校 ...
最新文章
- windows10下pip安装速度慢的解决办法
- 内核分析PE获取DLL导出函数地址
- java的lookAndfeel_java-LookAndFeel行为之间的区别
- Leetcode PHP题解--D29 973. K Closest Points to Origin
- 基于JAVA+SpringBoot+Mybatis+Vue+MYSQL的在线考试系统
- Chrome安装Vue.js devtool 4.1.4_0
- ULN2003的使用
- 智能家居如何让消费者心甘情愿地买单
- macos 管理员权限 黑苹果_Mac OS X 黑苹果系统安装驱动Kext方法
- 天文软件ds9对图片调整颜色和两张图片坐标自动匹对
- 编程小白的第一本Python入门书学习笔记
- 深度网络自适应DCC算法
- Trying to access array offset on value of type int
- 120日均线金叉250日均线是大牛市来临的重要信号
- 用计算机制作母亲贺卡,母亲节电子贺卡制作
- C++判断输入内容是否为整数
- 最新官方新浪短网址API接口分享-附代码调用演示
- 通过app打包修改app名称
- noip2014 生活大爆炸版 石头剪刀布 (模拟)
- PTA 7-154 置点不动产——认真学习,努力工作买买房子吧