题目链接http://poj.org/problem?id=1064

题目大意:一堆棍子可以截取,问要求最后给出K根等长棍子,求每根棍子的最大长度。保留2位小数。如果小于0.01,则输出0.00

解题思路

根据最长的棍子二分枚举切割长度。

这点很容易想到。

本题麻烦的地方在于小数的二分。

由于精度丢失问题,如果直接使用double进行二分,那么二分确定的最大长度必然是不精确的。

如:只有1根100.0的棍子,分成10段。如果使用double二分,那么就算把精度控制到0.0000001,

最后的答案也就9.9999666。,而不是10.

由于只要求2位小数,则把所有棍子长度*100,变成整数二分即可。

最后答案ans/=100。

#include "cstdio"
#include "iostream"
using namespace std;
int n,k;
double cable[];
bool check(double x)
{
int cnt=;
for(int i=;i<=n;i++) cnt+= (cable[i]/x);
if(cnt>=k) return true;
else return false;
}
int main()
{
//freopen("in.txt","r",stdin);
scanf("%d%d",&n,&k);
double l=,r=-,ans=;
for(int i=;i<=n;i++)
{
scanf("%lf",&cable[i]);
r=max(r,cable[i]);
}
int L=,R=r*;
while(L<=R)
{
int mid=L+(R-L)/;
if(check((double)mid/)) {ans=mid;L=mid+;}
else R=mid-;
}
ans/=;
if(ans<0.01) printf("0.00\n");
else printf("%.2lf",ans);
}
13589456 neopenx 1064 Accepted 252K 63MS C++ 700B 2014-11-01 20:39:43

POJ 1064 (二分)的更多相关文章

  1. poj 1064 (二分+控制精度) && hdu 1551

    链接:http://poj.org/problem?id=1064 Cable master Time Limit: 1000MS   Memory Limit: 10000K Total Submi ...

  2. poj 1064(二分答案)

    传送门:Problem 1064 https://www.cnblogs.com/violet-acmer/p/9793209.html 题意: 有N条绳子,长度分别为 length[1,2,3,.. ...

  3. POJ 1064 Cable master(二分查找+精度)(神坑题)

    POJ 1064 Cable master 一开始把 int C(double x) 里面写成了  int C(int x) ,莫名奇妙竟然过了样例,交了以后直接就wa. 后来发现又把二分查找的判断条 ...

  4. poj 1064 Cable master 判断一个解是否可行 浮点数二分

    poj 1064 Cable master 判断一个解是否可行 浮点数二分 题目链接: http://poj.org/problem?id=1064 思路: 二分答案,floor函数防止四舍五入 代码 ...

  5. POJ 1064 1759 3484 3061 (二分搜索)

    POJ 1064 题意 有N条绳子,它们长度分别为Li.如果从它们中切割出K条长度相同的绳子的话,这K条绳子每条最长能有多长?答案保留小数点后2位. 思路 二分搜索.这里要注意精度问题,代码中有详细说 ...

  6. POJ - 2018 二分+单调子段和

    依然是学习分析方法的一道题 求一个长度为n的序列中的一个平均值最大且长度不小于L的子段,输出最大平均值 最值问题可二分,从而转变为判定性问题:是否存在长度大于等于L且平均值大于等于mid的字段和 每个 ...

  7. 二分搜索 POJ 1064 Cable master

    题目传送门 /* 题意:n条绳子问切割k条长度相等的最长长度 二分搜索:搜索长度,判断能否有k条长度相等的绳子 */ #include <cstdio> #include <algo ...

  8. POJ 1064 Cable master (二分答案)

    题目链接:http://poj.org/problem?id=1064 有n条绳子,长度分别是Li.问你要是从中切出m条长度相同的绳子,问你这m条绳子每条最长是多少. 二分答案,尤其注意精度问题.我觉 ...

  9. [POJ] 1064 Cable master (二分查找)

    题目地址:http://poj.org/problem?id=1064 有N条绳子,它们的长度分别为Ai,如果从它们中切割出K条长度相同的绳子,这K条绳子每条最长能有多长. 二分绳子长度,然后验证即可 ...

随机推荐

  1. jquery博客收集的IE6中CSS常见BUG全集及解决方案

    今天的样式调的纠结,一会这边一会那么把jquery博客折腾的头大,浏览器兼容性.晚上闲着收集一些常见IE6中的BUG 3像素问题及解决办法 当使用float浮动容器后,在IE6下会产生3px的空隙,有 ...

  2. 用JAVA代码实现验证邮箱地址是否符合

    public class Test{ public static void main(String[] args){ Test t = new Test(); String email = " ...

  3. Maximum Product Subarray

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  4. C++公有继承

    is-a.has-a和like-a.组合.聚合和继承 两组概念的区别 - cbk861110的专栏 - 博客频道 -CSDN.NET http://blog.csdn.net/cbk861110/ar ...

  5. 获取Ad用户信息

    private];                }                dt.Rows.Add(dr);            }            return dt;        ...

  6. static_cast dynamic_cast const_cast reinterpret_cast总结对比

    [本文链接] http://www.cnblogs.com/hellogiser/p/static_cast-dynamic_cast-const_cast-reinterpret_cast.html ...

  7. maven web项目build失败

    通过maven build发布web项目到tomcat时报如下异常: [INFO] ---------------------------------------------------------- ...

  8. win10远程桌面连接

    有的情况下,Win10设置了允许远程桌面连接后,远程主机仍然不能桌面连接到目标主机上,这时可以在目标主机上尝试如下修改: 开始-->运行->gpedit.msc->计算机配置-> ...

  9. SharedPreferences&SQLite比较

    SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使 ...

  10. C++复制构造函数和赋值符的区别

    From  http://blog.csdn.net/randyjiawenjie/article/details/6666937 非常感谢原作者分享. class CTest{public: CTe ...