codevs 3297 木材加工
来源:互联网 发布:变态学教授无铭 知乎 编辑:程序博客网 时间:2024/04/27 17:09
codevs 3297 木材加工
题目描述 Description
木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小段的数目是给定了。当然,我们希望得到的小段越长越好,你的任务是计算能够得到的小段木头的最大长度。 木头长度的单位是厘米。原木的长度都是正整数,我们要求切割得到的小段木头的长度也要求是正整数。
输入描述 Input Description
第一行是两个正整数N和K(1 ≤ N ≤ 100000, 1 ≤ K ≤ 100000),N是原木的数目,K是需要得到的小段的数目。
接下来的N行,每行有一个1到100000之间的正整数,表示一根原木的长度。
输出描述 Output Description
输出能够切割得到的小段的最大长度。如果连1厘米长的小段都切不出来,输出”0”。
样例输入 Sample Input
3 7
232
124
456
样例输出 Sample Output
114
思路:因为要求最切得长度相同且越大越好,二分轻松水过。
题解:
#include<iostream>#include<cstdio>using namespace std;int n,m;int a[100000+10];bool check(int mid){ int tot=0; for(int i=1;i<=n;i++) { tot+=a[i]/mid; } if(tot>=m) { return 1; } else { return 0; }}int main(){ scanf("%d%d",&n,&m); int r=0; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); r=max(r,a[i]); } int l=1; int mid; int ans=0; while(l<=r) { int mid=(l+r)/2; if(check(mid)) { l=mid+1; ans=max(ans,mid); } else { r=mid-1; } } printf("%d",ans); return 0;}
1 0
- codevs 3297 木材加工
- codevs 3297 木材加工(裸二分)
- CODEVS 3297 木材加工 一道有毒的水题
- wikioi 3297 木材加工
- 木材加工
- 木材加工
- 木材加工
- 木材加工
- [POJ2774]木材加工
- OpenJugde - 2774:木材加工
- OpenJudge 2774 木材加工
- LintCode-木材加工
- noip2005初赛-木材加工
- LintCode 木材加工
- lintcode-木材加工-183
- lintcode 木材加工
- OpenJudge_P1776 木材加工
- openjudge 木材加工
- 微信小程序开发
- 面向初学者的 MQL4 语言系列之5——自定义指标2
- report builder3.0的基本文档
- RESTful API详解
- 让错的程序看得出错(简体中文)(Making Wrong Code Look Wrong)--让错误代码显得错误
- codevs 3297 木材加工
- 1409D成员域名
- Ubuntu下利用ssh实现远程登录
- 第五周项目1——建立顺序栈算法库
- 【BZOJ1040】【codevs1423】骑士,第一次的基环外向树DP
- 十进制转其他进制(递归)
- .NET Core全面扫盲贴
- 第5周项目1 Raptor(2)
- 测试边界值(上点、内点、离点)