POJ1064 Cable master 【二分找最大值】
题目:题目太长了!
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 【二分找最大值】的更多相关文章
- poj1064 Cable master(二分)
Cable master 求电缆的最大长度(二分法) Description Inhabitants of the Wonderland have decided to hold a region ...
- 二分法的应用:POJ1064 Cable master
/* POJ1064 Cable master 时间限制: 1000MS 内存限制: 10000K 提交总数: 58217 接受: 12146 描述 Wonderland的居民已经决定举办地区性编程比 ...
- (poj)1064 Cable master 二分+精度
题目链接:http://poj.org/problem?id=1064 Description Inhabitants of the Wonderland have decided to hold a ...
- poj1064 Cable master
Description Inhabitants of the Wonderland have decided to hold a regional programming contest. The J ...
- poj1064 Cable master(二分查找,精度)
https://vjudge.net/problem/POJ-1064 二分就相当于不停地折半试. C++AC,G++WA不知为何,有人说C函数ans那里爆int了,改了之后也没什么用. #inclu ...
- POJ1064 Cable master(二分 浮点误差)
题目链接:传送门 题目大意: 给出n根长度为1-1e5的电线,想要从中切割出k段等长的部分(不可拼接),问这个k段等长的电线最长可以是多长(保留两位小数向下取整). 思路: 很裸的题意,二分答案即可. ...
- POJ 1064 Cable master (二分答案)
题目链接:http://poj.org/problem?id=1064 有n条绳子,长度分别是Li.问你要是从中切出m条长度相同的绳子,问你这m条绳子每条最长是多少. 二分答案,尤其注意精度问题.我觉 ...
- [POJ] 1064 Cable master (二分查找)
题目地址:http://poj.org/problem?id=1064 有N条绳子,它们的长度分别为Ai,如果从它们中切割出K条长度相同的绳子,这K条绳子每条最长能有多长. 二分绳子长度,然后验证即可 ...
- POJ 1064 Cable master | 二分+精度
题目: 给n个长度为l[i](浮点数)的绳子,要分成k份相同长度的 问最多多长 题解: 二分长度,控制循环次数来控制精度,输出也要控制精度<wa了好多次> #include<cstd ...
随机推荐
- 十二.filter
Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是 ...
- ubuntu 下正确安装android手机驱动
1. 查看手机ID号. charlesxue@THSHIBA:~/setup/cocos2d-x/cocos2d-x-/projects/simpleGame/proj.android/bin$ ls ...
- 银行家算法之JavaScript实现
上学期有个课程叫做操作系统,期末的时候这课程还有个课程设计,其中有个题目叫做银行家算法. 什么是银行家算法我就不解释了! 看着同学们的设计,大同小异甚至前篇一律. 清一色的控制台程序,清一色的蛋疼输入 ...
- 23-单词数(HDU2070)
单词数 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- 模板模式和Comparable类
模板模式中,父类规定好了一些算法的流程,并且空出一些步骤(方法)留给子类填充 Java的数组类中静态方法sort()就是一个模板,它空出了一个compareTo的方法,留给子类填充,用来规定什么是大于 ...
- Vue.js路由组件
1.如果在创建项目中,没有自动安装vue router,那就自行安装.cnpm install vue-router --save vue-router两种模式 hash模式和history模式. 默 ...
- Oracle——单行函数
两种 SQL 函数 单行函数 字符函数 大小写控制函数 SELECT employee_id, last_name, department_id FROM employees WHERE last_n ...
- canvas时钟demo
显示效果如下 源码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- Struts2 让跳转指定执行某个方法
很多时候,我们想让jsp页面中的某个超链接,点击后执行后台的某个方法,里面该如何做呢? 这里方法很多种 我举例两种: 1.在struts.xml配置,配置如下: <package name=&q ...
- 常用Linux命令:netstat
一.netstat:显示各种网络相关信息 1.命令格式 netstat [参数] 2.常用参数 -a :(all)显示所有选项,默认不现实LISTEN相关 -t :(tcp)仅显示tcp相关 ...