hdu4190 二分答案

Posted zsben991126

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu4190 二分答案相关的知识,希望对你有一定的参考价值。

/*二分答案即可*/
#include<bits/stdc++.h>
#define maxn 500005
#define ll long long
#define INF 5000005

using namespace std;

ll n,b,a[maxn];

int judge(ll x){
    ll tot=0;
    for(int i=1;i<=n;i++)
        tot+=a[i]/x+(a[i]%x!=0);
    if(tot<=b) return 1;
    else return 0;
}

int main(){
    while(scanf("%lld%lld",&n,&b),n>0){
        ll l=0,r=INF,mid,ans;
        for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
        while(l<=r){
            mid=l+r>>1;
            if(judge(mid))//要用的盒子小于b个 
                ans=mid,r=mid-1;
            else 
                l=mid+1;
        }
        printf("%lld
",ans);
    }
    return 0;
} 

 

以上是关于hdu4190 二分答案的主要内容,如果未能解决你的问题,请参考以下文章

2019杭电多校第四场hdu6621 K-th Closest Distance(二分答案+主席树)

hdu5044(二分)

[hdu2298] 物理推导+二分答案

hdu1969---Pie

hdu6383 p1m2(二分答案)

Maximum Shortest Distance 最大团 二分答案 HDU 3585