c++运输木料

打印 上一主题 下一主题

主题 823|帖子 823|积分 2469

描述
木料厂堆着 n 根大木头,老板派一辆卡车将木头运走,卡车至少要装载 m 根才能发车。
如今利用机器将 n 根大木头切割发展度相等的小木头,当然渴望小木头越长越好,如许才能少浪费木料。
请利用所学的知识,帮忙计算小木头的最大长度,交给切割师傅。
输入描述
第一行两个正整数 n 和 m,分别代表大木头的数量,卡车的装载量 m 根。
接下来 n 行,每行一个正整数 ai​,表示每根大木头的长度。
输出描述
一个正整数,表示小木头的最大长度。假如切不出来,输出 0。
样例输入 1 
  1. 4 7
  2. 18
  3. 6
  4. 11
  5. 7
复制代码
样例输出 1 
  1. 5
复制代码
提示
数据范围与提示

对于 100% 的数据,有 1≤n≤105,1≤m≤108,1≤ai​≤108。
代码:
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int n,k,a[100001],r,l,ans,mid;
  4. double x;
  5. bool c(int mid){
  6.         long long s=0;
  7.         for(int i=1;i<=n;i++){
  8.                 s+=a[i]/mid;
  9.         }
  10.         return s>=k;
  11. }
  12. int main(){
  13.         cin>>n>>k;
  14.         for(int i=1;i<=n;i++){
  15.                 cin>>a[i];
  16.                 r=max(r,a[i]);
  17.         }
  18.         while(l<=r){
  19.                 mid=(l+r)/2;
  20.                 if(c(mid)){
  21.                         ans=mid;
  22.                         l=mid+1;
  23.                 }else{
  24.                         r=mid-1;
  25.                 }
  26.         }
  27.         cout<<ans;
  28.         return 0;
  29. }
复制代码
以上内容均为原创;欢迎参考、借鉴!
但拒绝盗版;也禁止任何人在未经本人同意的条件下用于商业用途。
作者保留法律追究责任。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

怀念夏天

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表