zoukankan      html  css  js  c++  java
  • hdu 1551(二分)


    //hdu1551 二分
    /*
    主要题意是:给你N条电缆和要切成M条,问你每条
    最长是多少?N条电缆长度已知,M条的长度相同。

    */

     1 #include<stdio.h>
     2 #include<string.h>
     3 #define exp 1e-5 // 精度
     4 int main()
     5 {
     6     int n,m,i,j,k,t,num;
     7     double a[11111];
     8     double MAX;
     9     
    10     while(~scanf("%d %d",&n,&m))
    11     {
    12         MAX = 0;
    13         if(n == 0 && m == 0)
    14             break;
    15         for(i=0;i< n;i ++)
    16         {
    17             scanf("%lf",&a[i]);
    18             MAX += a[i];
    19         }
    20         MAX /= m;
    21         double mid,l,r;
    22         l = 0;
    23         r = MAX;
    24         while((r-l)>exp)
    25         {
    26             mid = (l+r)/2;
    27             num = 0;
    28             for(i = 0;i < n;i ++)//计算当每段长mid时,N条电缆能切几段。
    29             {
    30                 t=int(a[i]/mid);
    31                 num += t;
    32             }
    33             if(num >= m) // 段数比M多,即每一段的长度偏小,把mid 赋值给l。
    34                 l = mid;
    35             else
    36                 r = mid;
    37         }
    38         printf("%.2lf
    ",l);
    39     }
    40     return 0;
    41 }
    View Code
  • 相关阅读:
    2-SIFT简介
    1-SIFT资源整理
    1-vs2015+opencv 3.2.0配置
    5-load-on-startup
    4-监听器
    3-过滤器
    第09组 Alpha冲刺 (1/6)
    第09组(71) 需求分析报告
    第9组(71) 团队展示
    结对编程作业
  • 原文地址:https://www.cnblogs.com/ypacm/p/6068175.html
Copyright © 2011-2022 走看看