Peng Lv

毋意,毋必,毋固,毋我。 言必行,行必果。

导航

{HDU}{4190}{Distributing Ballot Boxes}{二分答案}

二分答案与箱子数目进行匹配判定。

#include <iostream>
#include <string>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <memory>
#include <cmath>
#include <bitset>
#include <queue>
#include <vector>
#include <stack>
using namespace std;

const int MAXN = 600000;

#define CLR(x,y) memset(x,y,sizeof(x))
#define MIN(m,v) (m)<(v)?(m):(v)
#define MAX(m,v) (m)>(v)?(m):(v)
#define ABS(x) ((x)>0?(x):-(x))
#define rep(i,x,y) for(i=x;i<y;++i)


int a[MAXN];
int n,b;

bool judge(const int& vote)
{
    int tmp,i,j;
    int t,cnt;
    cnt = 0;
    rep(i,0,n){
        tmp = a[i];
        while( true ) {
            ++cnt;
            tmp -= vote;
            if( tmp <= 0 )
                break;
        }
        if( cnt > b )
            return false;
    }
    return true;
}
int work()
{
    int i,j,tmp,val;
    int l,r,mid;
    while( scanf("%d%d",&n,&b) ){
        if( n == -1 || b == - 1)
            break;
        rep(i,0,n)
            scanf("%d",&a[i]);
        l = 0;
        r =  5000000;
        while( l < r ){
            mid = (l+r)>>1;
            if(judge(mid))
                r = mid;
            else
                l = mid + 1;
        }
        printf("%d\n",r);
    }
    return 0;
}
int main()
{
    work();
    return 0;
}

 

 

 

posted on 2012-05-16 17:05  Lvpengms  阅读(293)  评论(0编辑  收藏  举报