• 【noiOJ】p1776


    t1776:木材加工

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

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

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

    输出
    输出能够切割得到的小段的最大长度。如果连1厘米长的小段都切不出来,输出"0"。
    样例输入
    3 7
    232
    124
    456
    
    样例输出
    114
    来源
    NOIP 2004
     1 #include <iostream>
     2 #include <cstdio>
     3 using namespace std;
     4 int a[10010],n,k,sum;
     5 int judge(int x)
     6 {
     7     int i,ans=0;;
     8     for (i=1;i<=n;i++)
     9         ans+=a[i]/x;
    10     return ans;
    11 }
    12 int main()
    13 {
    14     int i;
    15     int left,right,mid,maxn;
    16     scanf("%d%d",&n,&k);
    17     maxn=0;
    18     for (i=1;i<=n;i++)
    19     {
    20         scanf("%d",&a[i]);
    21         maxn=max(maxn,a[i]);
    22     }
    23     left=0;
    24     right=maxn*2;
    25     while (right-left>1)
    26     {
    27         mid=(left+right)/2;
    28         sum=judge(mid);
    29         if (sum>=k)
    30             left=mid;
    31         else
    32             right=mid;
    33     }
    34     if (judge(right)>=k)
    35         printf("%d",right);
    36     else
    37         printf("%d",left);
    38     return 0;
    39 }
    —Anime Otaku Save The World.
  • 相关阅读:
    洛谷/SPOJ SP3267 题解
    洛谷P3834题解
    洛谷P2607题解
    可持久化0-1Trie树
    反悔贪心
    记录人生第一次面试
    赋值构造函数和赋值运算符
    使用VS2017遇到的一些小问题
    关于C++中extern的简单笔记
    MFC单文档
  • 原文地址:https://www.cnblogs.com/DMoon/p/5004455.html
Copyright © 2020-2023  润新知