码迷,mamicode.com
首页 > 其他好文 > 详细

XDOJ_1185_二分

时间:2016-11-02 20:14:14      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:ring   while   pre   string   ace   str   ios   div   ret   

http://acm.xidian.edu.cn/problem.php?id=1185

 

直接二分,每次判断当前的值是小了还是大了。

 

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;

int m,k,t[100005];

bool ok(int x)
{
    int cnt = 0,sum = 0;
    for(int i = 1;i <= m;i++)
    {
        if(sum+t[i] < x)    sum += t[i];
        else if(sum+t[i] == x)
        {
            cnt++;
            sum = 0;
        }
        else
        {
            cnt++;
            sum = t[i];
        }
    }
    if(sum) cnt++;
    if(cnt > k) return 1;
    return 0;
}

int main()
{
    while(~scanf("%d%d",&m,&k))
    {
        for(int i = 1;i <= m;i++)   scanf("%d",&t[i]);
        int l = 1,r = 100000000;
        while(l < r)
        {
            int mid = (l+r)/2;
            if(ok(mid)) l = mid+1;
            else    r = mid;
        }
        printf("%d\n",l);
    }
    return 0;
}

 

XDOJ_1185_二分

标签:ring   while   pre   string   ace   str   ios   div   ret   

原文地址:http://www.cnblogs.com/zhurb/p/6024029.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!