zoukankan      html  css  js  c++  java
  • poj 3273

        简单二分,下限为每天花费的最大值,上限是所有天数花费的总和.

    #include<iostream>
    #include<cstdio>
    using namespace std ;
    int mon[100005] ;
    int i, j, n, m ;
    int jud(int mid){
        int s=0, count=1 ;
         for (i=0; i<n; i++){
            s += mon[i] ;
            if(s>mid){
                s = mon[i] ;
                count ++ ;
            }
        }
        if(count>m) return true ;
        else    return false ;
    }
    int main(){
        int ans ;
        int max, sum ;
        while(scanf("%d%d", &n, &m)!=EOF){
            max = -1 ;
            sum = 0 ;
            for(i=0; i<n; i++){
                scanf("%d", &mon[i]) ;
                if(mon[i]>max)   max = mon[i] ;
                sum += mon[i] ;
            }
            int l = max, r = sum, mid ;
            while(r>l){
                mid = (l+r) / 2 ;
                if(jud(mid))
                    l = mid + 1 ;
                else
                    r = mid - 1 ;
            }
            cout << l << endl ;
        }

    } 

  • 相关阅读:
    [CF1299B] Aerodynamic
    [CF1338B] Edge Weight Assignment
    [CF689C] Mike and Chocolate Thieves
    [CF729C] Road to Cinema
    [CF735C] Tennis Championship
    [CF766C] Mahmoud and a Message
    [CF797C] Minimal string
    [CF798C] Mike and gcd problem
    [CF818D] Multicolored Cars
    《剑指Offer》面试题55:字符流中第一个不重复的字符
  • 原文地址:https://www.cnblogs.com/xiaolongchase/p/2220501.html
Copyright © 2011-2022 走看看