zoukankan      html  css  js  c++  java
  • 第三周 动态规划算法(1):2.木材加工

    总时间限制:
    1000ms
    内存限制:
    65536kB
    描述
    木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小段的数目是给定了。当然,我们希望得到的小段越长越好,你的任务是计算能够得到的小段木头的最大长度。

    木头长度的单位是厘米。原木的长度都是正整数,我们要求切割得到的小段木头的长度也要求是正整数。
    输入

    第一行是两个正整数NK(1 <=N<= 10000, 1 <=K<= 10000),N是原木的数目,K是需要得到的小段的数目。
    接下来的N行,每行有一个1到10000之间的正整数,表示一根原木的长度。
     

    输出
    输出能够切割得到的小段的最大长度。如果连1厘米长的小段都切不出来,输出"0"。
    样例输入
    3 7
    232
    124
    456
    
    样例输出
    114
    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <string>
    #include <cstring>
    using namespace std;
    
    int n = 0, k = 0, sum = 0, count = 0;
    int len[10005] = {0};
    
    int cou(int c)
    {
        int count = 0;
        for(int j = n - 1; j >= 0; --j)
        {
            count += len[j] / c;
        }
        return count;
    }
    
    
    int main(int argc,const char *argv[])
    {
        scanf("%d%d", &n, &k);
        for(int i = 0 ; i < n ; ++i)
        {
            scanf("%d", &len[i]);
            sum += len[i];
        }
        sort(len, len + n);
        if(k > sum) printf("0\n");
        else
        {
            int left = 1, right = sum / k, mid = (left + right) / 2;
            while (true)
            {
                if(left == right) break;
                if(right - left == 1)
                {
                    if(cou(right) != cou(mid)) right = mid;
                    break;
                }
                if(cou(mid) < k)
                {
                    right = mid;
                    mid = (left + right) / 2;
                }
                else
                {
                    left = mid;
                    mid = (left + right) / 2;
                }
            }
            printf("%d\n", right);
        }
        return 0;
    }
  • 相关阅读:
    mysql事务隔离级别回顾
    单链表倒数第K个节点的查找和显示
    mysql 行转列,对列的分组求和,对行求和
    获取分组后统计数量最多的纪录;limit用法;sql执行顺序
    You can't specify target table 'e' for update in FROM clause
    mysql 行转列 (结果集以坐标显示)
    springmvc执行流程 源码分析
    jdk动态代理 案例
    项目日志log管理
    apache和tomcat的区别
  • 原文地址:https://www.cnblogs.com/Konayuki2015/p/4514247.html
Copyright © 2011-2022 走看看