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 }
  • 相关阅读:
    Zookeeper 入门第一篇
    jmap命令
    Java中的原子操作类
    Fel表达式实践
    Fel表达式使用过程中需要注意的问题
    【luoguP1196】 [NOI2002]银河英雄传说--边带权并查集 ,
    【luoguP1955 】[NOI2015]程序自动分析--普通并查集
    【csp模拟赛2】 序列操作
    【csp模拟赛2】 爆搜 方格加数
    HZWER
  • 原文地址:https://www.cnblogs.com/KakagouLT/p/5001608.html
Copyright © 2011-2022 走看看