P2440 木材加工

退役后随便选一个二分练练手感

这题就是二分模板题。。

二分答案切多大,代入检验即可

#include <bits/stdc++.h>//二分答案 
using namespace std;
int a[100000+5];
long long sum;
int main(){
    int n,k,l,r; cin>>n>>k;
    for(int i=1;i<=n;i++){cin>>a[i]; r=max(a[i],r); sum+=a[i];}//r上限优化 
    if(sum<k){cout<<0;return 0;} //特判最多能否切出k块 ,不特判第4点会re,不知道为什么。。。有懂的人可以回复一下 
    l=0;
    while(l<=r){
        int mid=(l+r)>>1,x=0;
        for(int i=1;i<=n;i++)
            x+=a[i]/mid;
        if(x>=k) l=mid+1;
        else r=mid-1;
    }//二分模板 
    cout<<r;
    return 0;
 } 

 

  

posted @ 2021-06-07 14:21  小霜降  阅读(38)  评论(0编辑  收藏  举报