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 ;
        }

    } 

  • 相关阅读:
    Python基础知识二
    Django1-10-5管理界面中文设置
    人之初
    一句话解释wifi、蓝牙、4g的意思
    如何完美备份旧手机到新手机
    问题解决 --- surface go sd卡槽不识别问题
    反调试技术
    wireshark学习心得
    Socket编程,网络编程
    asm 知识总结
  • 原文地址:https://www.cnblogs.com/xiaolongchase/p/2220501.html
Copyright © 2011-2022 走看看