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 二分答案的主要内容,如果未能解决你的问题,请参考以下文章