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

最优装载(二分答案)

时间:2019-09-21 14:30:32      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:using   5*   check   clu   style   iostream   queue   最大   space   

给n个货物,k辆车,求每辆车的最大装载量的最小值

#include <iostream>
#include <queue>
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;
int n,k;
int a[500];
int check(ll p) {
    int pos=0;
    for(int i=0;i<k;i++) {
        ll s=0;
        while(s+a[pos]<=p) {
            s+=a[pos++];
            if(pos==n) return n;
        }
    }
    return pos;
}
int main( ) {
    cin>>n>>k;
    for(int i=0;i<n;i++) cin>>a[i];
    ll l=0,r=1e5*1e4;
    while(r-l>1) {
        int mid=(l+r)/2;
        if(check(mid)>=n) r=mid;
        else l=mid;
    }
    cout<<r<<endl;
    return 0;
}
/*
5 3
8 1 7 3 9
*/

 

最优装载(二分答案)

标签:using   5*   check   clu   style   iostream   queue   最大   space   

原文地址:https://www.cnblogs.com/wronin/p/11562839.html

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