题目背景

要保护环境

题目描述

题目描述:

木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头(木头有可能有

剩余),需要得到的小段的数目是给定的。当然,我们希望得到的小段木头越长越好,你的任务

是计算能够得到的小段木头的最大长度。木头长度的单位是cm。原木的长度都是正整数,

我们要求切割得到的小段木头的长度也是正整数。

例如有两根原木长度分别为11和21,要求切割成到等长的6段,很明显能切割出来的小段木头长度最长为5.

输入输出格式

输入格式:

输入:

第一行是两个正整数N和K(1 ≤ N ≤ 100000,1 ≤ K ≤ 100000000),N是原木的数目,K是需要得到的小段的数目。

接下来的N行,每行有一个1到100000000之间的正整数,表示一根原木的长度。

输出格式:

输出:

能够切割得到的小段的最大长度。如果连1cm长的小段都切不出来,输出”0”。

输入输出样例

输入样例#1:

3 7
232
124
456
输出样例#1:

114
思路:二分答案
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 500010
using namespace std;
int n,k,ans;
int l,r,mid;
int val[MAXN];
bool judge(){
int sum=;
for(int i=;i<=n;i++)
sum+=val[i]/mid;
if(sum>=k) return true;
else return false;
}
int main(){
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++)
scanf("%d",&val[i]);
l=;r=;
while(l<=r){
mid=(l+r)/;
if(mid==){
ans=;
break;
}
if(judge()){
l=mid+;
ans=mid;
}
else r=mid-;
}
cout<<ans;
}
 

最新文章

  1. Java中的Object类介绍
  2. 集成IJKplayer视频直播框架
  3. MAC 环境 ionic build android 命令在&quot;Downloading http://services.gradle.org/distributions/gradle-2.13-all.zip&quot;卡住问题
  4. codeforces 388C Fox and Card Game
  5. 红豆带你从零学C#系列之:开始C#编程(一)
  6. Nape 获取碰撞点加特效
  7. eoLinker 新功能发布,增加了识别代码注释自动生成文档功能
  8. mysql5.7版本yum安装---redhat7.0
  9. 性能测试---CPU内存部分
  10. mycat配置文件备份
  11. 为何串口dma发送数据可能不完整
  12. c++智能指针(2)
  13. javascript 数组对象及其方法
  14. Shell命令——文件目录
  15. cocos2dx学习资料
  16. Eclipse的bug,SunTlsRsaPremasterSecret KeyGenerator not available
  17. Maven仓库 - 分发构件至远程仓库
  18. mac下为什么光标按方向键只能一个字一个字地蹦
  19. android 在非UI线程更新UI仍然成功原因深入剖析
  20. 【BFS】【位运算】解药还是毒药

热门文章

  1. 【原创】java中各种集合类的实现浅析
  2. POJ 3264 Balanced Lineup【线段树】
  3. 3dmax实例教程-使用3ds Max 创建一个完整的场景
  4. React项目构建(利用webpack打包)
  5. 查看linux磁盘文件系统类型
  6. springMVC 定时器配置
  7. 1.1 Python for macOS 安装与配置
  8. 一个tomcat下部署多个项目或一个服务器部署多个tomcat
  9. 破解者是如何篡改游戏内数值的,揭秘Android手游破解全过程
  10. 怎样創建 iOS 展開式 UITableView?