codevs 1766 分果子

Posted desserts

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codevs 1766 分果子相关的知识,希望对你有一定的参考价值。

#include<iostream>
using namespace std;
#define MAX 100000+200
long long wei[MAX];
long long n,m;
/* 袋子的最小值是最大一堆果子的体积,最大值是所有果子的体积
函数 参数是此时袋子的体积v
*/

long long split(long long v)
{
    long long num = 1,hold =0;//num存放已使用多少个袋子,hold表示当前袋子已经装了多少
    for(long i=0;i<n;i++)
    {
        hold += wei[i];
        if(hold>v)
        {
            num++;
            hold = wei[i];
        }
    }
    return num;   //返回所使用袋子的个数
}

void solve(long long l,long long h)
{
    long long lw = l,hw = h,mw ;
    for(int i=0;i<300;i++)
    {
        mw = (lw+hw)/2;
        if(split(mw)>m)
        {
            lw = mw;
        }else{
            hw = mw;
        }
    }


    cout<<hw<<endl;
}

int main()
{
    long long sumw = 0,maxw = 0;
    cin>>n>>m;//m袋子的总个数,n是果树的总个数
    for(long  i=0;i<n;i++)
    {
        cin>>wei[i];
        sumw+=wei[i];
        maxw = max(maxw,wei[i]);
    }
    solve(maxw,sumw);
    return 0;
}

 

以上是关于codevs 1766 分果子的主要内容,如果未能解决你的问题,请参考以下文章

Codevs 1063 合并果子

codevs 1063 合并果子//优先队列

codevs 1063 合并果子 优先队列

codevs贪吃的九头龙

[codevs1746][NOI2002]贪吃的九头龙

哈希-蔡老板分果子