zoukankan      html  css  js  c++  java
  • poj 1064 Cable master

    https://vjudge.net/problem/POJ-1064

    题意:

    有n条绳子,他们的长度分别为Li。如果从他们中切割出k条长度相同的绳子,那么这k条绳子每条最长有多长。如果不足1cm(m是输入单位),输出0.00。保留两位小数。

    思路:

    卡了两次,第一次读题忽略了小于一厘米的情况。第二个是r设置的太小,这种应该设置成一个无限大的数,我设置的1e8,就ac了,但是100就会wa。

    输出小于1cm的情况的时候有坑,如果是0.006,那么直接输出会输出0.01,就是错误的,所以需要处理一下。即为floor(ans * 100) / 100,甚为巧妙。

    代码:

     1 #include <stdio.h>
     2 #include <algorithm>
     3 #include <math.h>
     4 using namespace std;
     5 
     6 double a[10005];
     7 int n,k;
     8 
     9 bool meet(double b)
    10 {
    11     int ans = 0;
    12 
    13     for (int i = 0;i < n;i++)
    14     {
    15         int t = floor(a[i] / b);
    16 
    17         ans += t;
    18     }
    19 
    20     //printf("%d
    ",ans);
    21     return ans >= k;
    22 }
    23 
    24 int main()
    25 {
    26 
    27 
    28     while (scanf("%d%d",&n,&k) == 2)
    29     {
    30         for (int i = 0;i < n;i++)
    31             scanf("%lf",&a[i]);
    32 
    33         sort(a,a+n);
    34 
    35         double l = 0,r = 1e8;
    36 
    37         for (int i = 0;i < 100;i++)
    38         {
    39             double mid = (l + r) / 2;
    40 
    41             if (meet(mid)) l = mid;
    42             else r = mid;
    43         }
    44 
    45         printf("%.2f
    ",floor(l * 100) / 100);
    46 
    47         //printf("%.2f
    ",0.006);
    48     }
    49 
    50 
    51     return 0;
    52 }
  • 相关阅读:
    PHP设计模式——单例模式
    PHP设计模式——工厂模式
    远程备份脚本
    支持UEFI和LEGACY的多系统安装U盘
    minikube部署kubernetes学习环境
    获取kubernetes镜像
    Jenkins常用插件
    不想用ubuntu了,换个系统manjaro
    openstack stein部署手册 10. 创建实例
    openstack stein部署手册 10. horzion
  • 原文地址:https://www.cnblogs.com/kickit/p/7571282.html
Copyright © 2011-2022 走看看