题目:题目太长了!

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

题意分析:给了你N根长度为小数形式的棍子,再给出了你需要分的棍子的数量K,但要求你这K根棍子的长度必须是一样长的。需要你求解出满足题意的最长可能的棍子长度。根据二分找最大值的应用写即可。

需要注意的是:

1.注意题目给的范围是All cables are at least 1 meter and at most 100 kilometers in length;

2.在写满足条件的函数时,对于int强制转换类型的应用,一定要注意后面的括号;(起初这里WA的)

3.因为是找最大值,所以用right;

4.100次循环的二分写法可以达到2^100,即可以达到10^30,足够了。

代码:

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
const int MAXN = 1e4+5;
int N, K;
double Data[MAXN]; bool fun(double x)
{
int cnt = 0;
for(int i = 0; i < N; i++)
cnt += (int)(Data[i]/x); //cnt += (int)Data[i]/x; WA
if(cnt >= K)
return true;
else
return false;
} void solve()
{
double left = 0, right = 100001;
double mid;
for(int i = 0; i < 100; i++)
{ mid = (left+right)/2;
if(fun(mid))
left = mid;
else
right = mid;
}
printf("%.2f\n", floor(right*100)/100);
} int main()
{
while(~scanf("%d %d", &N, &K) )
{
for(int i = 0; i < N; i++)
scanf("%lf", &Data[i]);
solve();
} return 0;
}

对于第二种二分写法,需要注意的是在用exp的时候,exp不能取太少,同时不要用小的左值去减右值,最好是用一个正值去和exp进行比较判断。

#include <cstdio>
#include <cstring>
#include <cmath>
#define exp 1e-5
using namespace std;
const int MAXN = 1e4+5;
double Data[MAXN];
int N, K; bool fun(double x)
{
int cnt = 0;
for(int i = 0; i < N; i++)
cnt += (int)(Data[i]/x);
return cnt >= K;
} void solve()
{
double left = 0, right = 100000, mid;
while(right - left > exp) // **while(left - right < exp)
{
mid = (left + right)/2;
if(fun(mid))
left = mid;
else
right = mid;
}
printf("%.2f", floor(right*100)/100);
} int main()
{
while(~scanf("%d %d", &N, &K))
{
for(int i = 0; i < N; i++)
{
scanf("%lf", &Data[i]);
}
solve();
} return 0;
}

  

  

  

POJ1064 Cable master 【二分找最大值】的更多相关文章

  1. poj1064 Cable master(二分)

    Cable master 求电缆的最大长度(二分法)   Description Inhabitants of the Wonderland have decided to hold a region ...

  2. 二分法的应用:POJ1064 Cable master

    /* POJ1064 Cable master 时间限制: 1000MS 内存限制: 10000K 提交总数: 58217 接受: 12146 描述 Wonderland的居民已经决定举办地区性编程比 ...

  3. (poj)1064 Cable master 二分+精度

    题目链接:http://poj.org/problem?id=1064 Description Inhabitants of the Wonderland have decided to hold a ...

  4. poj1064 Cable master

    Description Inhabitants of the Wonderland have decided to hold a regional programming contest. The J ...

  5. poj1064 Cable master(二分查找,精度)

    https://vjudge.net/problem/POJ-1064 二分就相当于不停地折半试. C++AC,G++WA不知为何,有人说C函数ans那里爆int了,改了之后也没什么用. #inclu ...

  6. POJ1064 Cable master(二分 浮点误差)

    题目链接:传送门 题目大意: 给出n根长度为1-1e5的电线,想要从中切割出k段等长的部分(不可拼接),问这个k段等长的电线最长可以是多长(保留两位小数向下取整). 思路: 很裸的题意,二分答案即可. ...

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

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

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

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

  9. POJ 1064 Cable master | 二分+精度

    题目: 给n个长度为l[i](浮点数)的绳子,要分成k份相同长度的 问最多多长 题解: 二分长度,控制循环次数来控制精度,输出也要控制精度<wa了好多次> #include<cstd ...

随机推荐

  1. 场景中,并没有灯源的存在,但是cube却会有灯光照射的反应,这就是Light Probe Group的作用。

    http://blog.csdn.net/qq617119142/article/details/41674755

  2. 30-懒省事的小明(priority_queue)

    http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=55 懒省事的小明 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   ...

  3. 2.sql分类

    SQL DML 和 DDL 可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL). SQL (结构化查询语言)是用于执行查询的语法.但是 SQL 语言也包含用于更新.插 ...

  4. 数据库连接池DBUtils

    安装 pip3 install DBUtils DBUtils是Python的一个用于实现数据库连接池的模块. 此连接池有两种连接模式: 模式一:为每个线程创建一个连接,线程即使调用了close方法, ...

  5. C#将DataTable数据导出到EXCEL的两种方法

    1.在非服务器控件的页面导出数据,需要借助一张temp空页面post回后台的数据. 前台:window.location.href = "../Temp.aspx"; 后台: tr ...

  6. js实现选项卡切换

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  7. 编写高质量代码改善C#程序的157个建议——建议52:及时释放资源

    建议52:及时释放资源 垃圾回收机制自动为我们隐式地回收了资源(垃圾回收器会自动调用终结器),那我们为什么要主动释放资源呢? private void buttonOpen_Click(object ...

  8. vs2012 许可 tfs 许可

    Team Foundation Server 2012序列号或MSDN版本 BVGTF-T7MVR-TP46H-9Q97G-XBXRB VS2012注册码 亲测成功.我的是旗舰版... YKCW6-B ...

  9. window7 下配置python2.7+tornado3.3开发环境

    玩python的人大都在linux下进行开发,由于长期习惯在windows下开发代码,今天蛋疼尝试在window7下配置python2.7+tornado3.3开发环境,必然的中间遇到各种报错,但是最 ...

  10. 引用母版页的内容页添加CSS文件

    在内容页当中定义一个类然后调用内中的方法即可 public static class addstyle{  //可以不用实例化 public static void addstylesheet(Pag ...