3 条题解

  • 2
    @ 2022-11-5 16:20:07
    using namespace std;
    int n, k, a[100005], max_a=-1;
    int check(int kk){
    int   ret=0
    for(int j=0; j<n; i++)
    ret+=a[i]/kk
    return ret
    }
    int main()
    {
    cin>>n>>k;
    for(int i=0; i<n; i++)
    cin>>a[i], max_a=max(max_a,a[i]);
    int l=1, r=max_a
    int ans=0;
    while(l<=r){
    int mid=(l+r)/2
    if(check(mid)>=k){
    ans=mid;
    l=mid+1;
    }
    else
    r=mid-1;
    }
    cout<<ans;
    return 0;
    }
    
    • -2
      @ 2021-12-25 20:51:16
      #include<bits/stdc++.h>
      using namespace std;
      int n, k, a[100005], max_a=-1;
      int check(int kk){
          int   ret=0;
          for(int i=0; i<n; i++)
              ret+=a[i]/kk;
          return ret;
      }
      int main()
      {
          cin>>n>>k;
          for(int i=0; i<n; i++)
              cin>>a[i], max_a=max(max_a,a[i]);
          int l=1, r=max_a;  //搜索范围是[1,max_a]
          int ans=0;  //初始化假定无解为0
          while(l<=r){
              int mid=(l+r)/2;
              if(check(mid)>=k){    //如果以mid长度切木头获得的段数>=k,则说明ans偏小
                  ans=mid;
                  l=mid+1;
              }
              else
                  r=mid-1;
          }
          cout<<ans;
          return 0;
       }
      
      • -3
        @ 2021-12-25 20:43:21

        ''' a a

        • 1

        信息

        ID
        1277
        时间
        1000ms
        内存
        256MiB
        难度
        5
        标签
        递交数
        113
        已通过
        41
        上传者