描述
木料厂堆着 n 根大木头,老板派一辆卡车将木头运走,卡车至少要装载 m 根才能发车。
如今利用机器将 n 根大木头切割发展度相等的小木头,当然渴望小木头越长越好,如许才能少浪费木料。
请利用所学的知识,帮忙计算小木头的最大长度,交给切割师傅。
输入描述
第一行两个正整数 n 和 m,分别代表大木头的数量,卡车的装载量 m 根。
接下来 n 行,每行一个正整数 ai,表示每根大木头的长度。
输出描述
一个正整数,表示小木头的最大长度。假如切不出来,输出 0。
样例输入 1
样例输出 1
提示
数据范围与提示
对于 100% 的数据,有 1≤n≤105,1≤m≤108,1≤ai≤108。
代码:
- #include <bits/stdc++.h>
- using namespace std;
- int n,k,a[100001],r,l,ans,mid;
- double x;
- bool c(int mid){
- long long s=0;
- for(int i=1;i<=n;i++){
- s+=a[i]/mid;
- }
- return s>=k;
- }
- int main(){
- cin>>n>>k;
- for(int i=1;i<=n;i++){
- cin>>a[i];
- r=max(r,a[i]);
- }
- while(l<=r){
- mid=(l+r)/2;
- if(c(mid)){
- ans=mid;
- l=mid+1;
- }else{
- r=mid-1;
- }
- }
- cout<<ans;
- return 0;
- }
复制代码 以上内容均为原创;欢迎参考、借鉴!
但拒绝盗版;也禁止任何人在未经本人同意的条件下用于商业用途。
作者保留法律追究责任。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |