zoukankan      html  css  js  c++  java
  • Openjudge NOI题库 ch0111/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

    这题和ch0111/04是一样的做法,在这里就详细介绍了。

    Ps 把n、k输入注释掉可以得1分!

     1 #include <stdio.h>
     2 int len[10010]={0};
     3 int main()
     4 {
     5     int i;
     6     int max=-1;
     7     int n,k,ans,mid;
     8     int r,l;
     9     scanf("%d%d",&n,&k);
    10     for(i=0;i<n;i++)
    11     {
    12         scanf("%d",&len[i]);
    13         if(len[i]>max) max=len[i];
    14     }
    15     l=0;
    16     r=max+1;
    17     while(l+1<r)//二分寻找合适的长度 
    18     {
    19         ans=0;
    20         mid=(l+r)/2;
    21         for(i=0;i<n;i++)
    22             ans+=len[i]/mid;
    23         if(ans>=k) l=mid;//注意这里条件控制就行了
    24         else  r=mid;
    25     }
    26     printf("%d",l);
    27     return 0;
    28 }
  • 相关阅读:
    2018 Wannafly summer camp Day2--New Game!
    2018 Wannafly summer camp Day8--区间权值
    2018 Wannafly summer camp Day3--Shopping
    2018 Wannafly summer camp Day3--Travel
    HDU 6354--Everything Has Changed(判断两圆关系+弧长计算)
    Spring boot-(2) Spring Boot使用
    Spring boot-(1) Spring Boot快速开始
    Quartz使用(5)
    Quartz使用(4)
    Quartz使用(3)
  • 原文地址:https://www.cnblogs.com/KakagouLT/p/5001608.html
Copyright © 2011-2022 走看看