题目描述
题目描述:木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头(木头有可能有剩余),需要得到的小段的数目是给定的。当然,我们希望得到的小段木头越长越好,你的任务是计算能够得到的小段木头的最大长度。木头长度的单位是cm。原木的长度都是正整数,我们要求切割得到的小段木头的长度也是正整数。例如有两根原木长度分别为11和21,要求切割成到等长的6段,很明显能切割出来的小段木头长度最长为5.
输入
第一行是两个正整数N和K(1 ≤ N ≤ 100000,1 ≤ K ≤ 100000000),N是原木的数目,K是需要得到的小段的数目。接下来的N行,每行有一个1到100000000之间的正整数,表示一根原木的长度。
输出
能够切割得到的小段的最大长度。如果连1cm长的小段都切不出来,输出”0”。
样例输入
3 7
232
124
456
样例输出
114
题目思路

题目要求出最大长度,那我们从100000000到0的长度都验证一次,那么就可以得出答案,但是如果这样暴力枚举的话,由于数据量的问题,会超时的。所以我们用二分的方法可以将需要验证的数据大大降低。从而加快程序的运行。

题目代码
#include <iostream>
#include <cstdio>
#include <algorithm>
#define LL long long using namespace std;
int n, k, l, r, mid, a[100005];
LL sum = 0;
// 验证
bool F(int x){int ans = 0;for(int i = 0; i < n; i++){ans += a[i] / x;}return ans >= k;
}
int main(){scanf("%d%d",&n, &k);for(int i = 0; i < n; i++){scanf("%d",&a[i]);sum += a[i];}if(sum < k){printf("%d\n",0);}else if(sum == k){printf("%d\n",1);}else{// 枚举优化二分 l = 0; r = sum / k;while(l < r){mid = (l+r+1) >> 1;if(F(mid))l = mid;elser = mid - 1;}printf("%d\n",l);}return 0;
} 

洛谷OJ - P2440 - 木材加工(二分答案)相关推荐

  1. 洛谷 P2440 木材加工 (二分答案)

    P2440 木材加工 题意 给定N个木头及其长度,要求把这些木头切割成M块长度相同的小段木头(木头有可能有剩余),求小段木头的最大值. 比如:有两木头长度为 11 和 21, 要求切成 6 块, 那么 ...

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

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

  3. 切绳子【洛谷P1577】【二分】

    切绳子[洛谷P1577][二分] 文章目录 切绳子[洛谷`P1577`][二分] 题目描述 输入格式 输出格式 输入 输出 代码 题目描述 有 N 条绳子,它们的长度分别为 Li.如果从它们中切割出 ...

  4. #洛谷oj:P1525 [NOIP2010 提高组] 关押罪犯

    洛谷oj:P1525 [NOIP2010 提高组] 关押罪犯 #题目描述 #一看很明显是贪心算法 加排序 因为 这个中间最大值的那一对肯定是不会在一起的 从大到小来看 所有点对都尽量不要在一个监狱 # ...

  5. 洛谷oj题单【入门2】分支结构-入门难度(Java)

    洛谷oj题单[入门2]分支结构-入门难度(Java) 来源:https://www.luogu.com.cn/training/101#problems P5709 [深基2.习6]Apples Pr ...

  6. 洛谷OJ 入门与面试 B2001-B2148 题解

    洛谷OJ 入门与面试 B2001-B2148 链接:https://pan.baidu.com/s/1cMRv6SBjL_sehYj7oM8gkw 提取码:tel3 B2001 入门测试题目 #inc ...

  7. 洛谷OJ上的A+B花(zhuang)式(bi)解法

    转眼间快到了8月,一想自己都毕业好久了,很怀念曾经在各大OJ上刷题的时光,今天无意在一个算法群里看到最近有个叫洛谷的oj网站貌似蛮火的,于是注册了一个下进去看一看,顺手打开了A+B problem,然 ...

  8. 【洛谷OJ C++】洛谷题单100 入门1顺序结构 题解及学习笔记

    洛谷平台题单100链接:https://www.luogu.com.cn/training/100#problems 目录 学习笔记: P1001 A+B Problem P1000 超级玛丽游戏 P ...

  9. 洛谷P1873 砍树(二分)

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

  10. 【洛谷OJ C++】洛谷题单101 入门2分支结构 题解及学习笔记

    洛谷题单101链接:https://www.luogu.com.cn/training/101#problems 笔记及题解目录: 学习笔记: P5710 [深基3.例2]数的性质 P5711 [深基 ...

最新文章

  1. JUnit4.11 理论机制 @Theory 完整解读
  2. HPU暑期第五次积分赛 - G-迷宫(BFS+最短路径)
  3. 《仙剑奇侠传online》游戏后台优化分析:CPU、内存与启动时间
  4. 我的世界1 11java,Editing Java版Alpha v1.0.11
  5. STM32那点事(3)_中断(上)
  6. 视频教程-webpack基础和完整项目脚手架搭建教程-JavaScript
  7. idea启动webservice_Idea实现WebService实例
  8. 【oracle】varchar和varchar2区别
  9. iphone 模拟器截图
  10. 世预赛首发焦点解析:里皮的思路你能懂?
  11. 你不知道的JavaScript APIs
  12. Options error: In [CMD-LINE]:1: Error opening configuration file: xxxx.ovpn
  13. 常见六大Web安全问题
  14. 程序员女装大佬们,你们太可怕了,我还以为在逛 PornHub 呢
  15. 如何找到网站后台管理网页地址
  16. libzip解压缩方法分析
  17. java amr格式转mp3格式(完美解决Linux下转换0K问题)
  18. 电脑上经常出现弹窗广告怎么办?教你3种方法,永久关闭
  19. Android第一行代码(第一行代码、活动)
  20. uniapp 调用手机相机拍照实现图片上传

热门文章

  1. 大三如何找暑期技术实习?技术实习找大公司还是小公司?
  2. pmp是什么意思啊?
  3. linux afs3服务,AFS配置3
  4. 简单的三点式腰背肌锻炼方法
  5. python中的序列化与反序列化_Python之序列化与反序列化(pickle模块与json模块)...
  6. 什么是驻点和拐点_临界点、驻点、拐点的定义是什么?
  7. 使用tornado如何实现请求异步非阻塞?
  8. thermal 代码分析
  9. emacs go-mode 设置tab宽度
  10. H5页面调用admob激励视频,用户获取奖励