zoukankan      html  css  js  c++  java
  • codevs 1766 装果子

    题目描述 Description

    果园里有n颗果树,每棵果树都有一个编号i(1≤in)。小明已经把每棵果树上的果子都摘下来堆在了这棵树的下方,每棵树下方的果子体积为ai

    现在小明将拿来m个袋子把这些果子都装进袋子里。每个袋子的体积为v。小明会按照如下规则把果子装进袋子里:

    (a)从第1棵果树开始装起,由1到n一直装到第n棵果树。

    (b)如果这棵果树下的果子能全部装进当前这个袋子,就装进去;如果不能,就关上当前这个袋子,打开一个新的袋子开始装。

    小明希望在能把所有果子都装进袋子里的前提下,v尽量小。m个袋子并不一定都要装进果子。

    输入描述 Input Description

    输入第1行,包含两个整数nm

    第2行,包含n个整数ai

    输出描述 Output Description

    输出仅1行,表示最小的v

    样例输入 Sample Input

    #1

    3 3

    1 2 3

    #2

    5 3

    1 3 6 1 7

    #3

    6 3

    1 2 1 3 1 4

    样例输出 Sample Output

    #1

    3

    #2

    7

    #3

    4

    数据范围及提示 Data Size & Hint

    【输入输出样例解释1】

    每个袋子的体积为3即可。前2棵果树的果子装在第一个袋子里,第3棵果树的果子装在第二个袋子里。第三个袋子不用装了。

    【输入输出样例解释2】

    每个袋子的体积为7即可。前2棵果树的果子装在第一个袋子里,此时第一个袋子已经装了4单位体积的果子,第3棵果树的果子装不下了,所以装进第二个袋子里,第4棵果树的果子刚好装进第二个袋子,第5棵果树的果子装进第三个袋子里。

     【输入输出样例解释3】

    每个袋子的体积为4即可。前3棵果树的果子装在第一个袋子里,第4~5棵果树的果子装在第二个袋子里,第6棵果树的果子装在第三个袋子里。

     【数据范围】

    对于40%的数据,0<mn≤1,000,0<ai≤1,000;

    对于70%的数据,0<mn≤100,000,0<ai≤100,000;

    对于100%的数据,0<mn≤100,000,0<ai≤1,000,000,000。

    思路:

    二分答案,然后带入验证,注意取整问题。

    代码:

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int n,m;
    long long sum,a[100001],maxn;
    bool pd(long long x)
    {
        long long s=1,v=x,i;
        for(i=1;i<=n;i++)
        {
            if(v>=a[i])
              v-=a[i];
            else
            {
                s++;
                v=x-a[i];
            }
            if(s>m)
              return 0;
        }
        return 1;
    }
    int main()
    {
        int i,j;
        scanf("%d%d",&n,&m);
        for(i=1;i<=n;i++)
          scanf("%lld",&a[i]),sum+=a[i],maxn=max(maxn,a[i]);
        long long l=maxn,r=sum,mid;
        while(l<=r)
        {
            mid=(l+r)>>1;
            if(pd(mid))
              r=mid-1;
            else
              l=mid+1;
        }
        printf("%lld",l);
        return 0;
    }
  • 相关阅读:
    PHP 5.5.0 Alpha5 发布
    Ubuntu Touch 只是另一个 Android 皮肤?
    MariaDB 10 已经为动态列提供文档说明
    Percona Toolkit 2.1.9 发布,MySQL 管理工具
    Oracle Linux 6.4 发布
    Ruby 2.0.0 首个稳定版本(p0)发布
    Apache Pig 0.11.0 发布,大规模数据分析
    Node.js 0.8.21 稳定版发布
    红薯 MySQL 5.5 和 5.6 默认参数值的差异
    Django 1.5 正式版发布,支持 Python 3
  • 原文地址:https://www.cnblogs.com/jyhywh/p/6051686.html
Copyright © 2011-2022 走看看