POJ 1064 Cable master(二分查找 求近似解)
来源:互联网 发布:手机淘宝下单怎么备注 编辑:程序博客网 时间:2024/05/22 06:59
题意:有N条绳子,给出它们的长度,现在要从他们中间切割出K条长度为L的绳子,问L最大可以是多少?答案保留小数点后两位。
这道题就是求一个最大的近似解,满足条件,从N条绳子中切割出K条长度为L的绳子。
(l,r]左开右闭,当mid求出来的可切割出的绳子数量刚好是K的时候,还是选择进入到区间(mid,r],因为r会不断向mid逼近,那么最后答案还是一样的。
答案保留小数点后两位,要用floor函数。因为如果直接%.2f\n输出,那么会四舍五入,int函数返回的是整型,floor返回的是浮点型。另外,int函数向0取整,floor向下取整,这个和题目没有关系。
题目中选择用循环100次的形式逼近求近似解,因为用r - l < eps的方式可能会出现问题。
#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<vector>#include<cmath>#define INF 100005#define N 10005using namespace std;int n, k;double l, r, mid;double len[N];bool ok(double x){ int sum = 0; for (int i = 0; i < n; i++) sum += int(len[i] / x); return sum >= k;}int main(){ scanf("%d%d", &n, &k); for (int i = 0; i < n; i++) scanf("%lf", &len[i]); l = 0; r = INF; for (int i = 0; i < 100; i++) { mid = (l + r) / 2; if (ok(mid)) l = mid; else r = mid; } printf("%.2f\n", floor(r * 100) / 100); return 0;}
0 0
- POJ 1064 Cable master(二分查找 求近似解)
- POJ 1064Cable master(二分查找)
- POJ 1064 Cable master(二分求可行解)
- [POJ](1064)Cable master ---二分查找(查找)
- POJ 1064 Cable master(二分查找)
- POJ 1064 Cable master 二分查找
- [ACM] poj 1064 Cable master (二分查找)
- [ACM] poj 1064 Cable master (二分查找)
- poj 1064 cable master (分绳子)二分求最大值
- Cable master(二分查找解)
- Cable master(二分查找)
- poj-1064Cable master(二分)
- POJ 1064 Cable master (二分答案)
- POJ 1064 Cable master (二分搜索)
- POJ 1064 Cable master(二分)
- POJ - 1064 Cable master(二分搜索)
- POJ 1064 Cable master(二分-精度)
- POJ 1064 Cable master (二分)
- MYSQL ERROR CODE 错误编号的意义
- 【bzoj3282】【Tree】【lct】
- LightOJ 1073 DNA Sequence (状压DP+字符串比较)
- Sentos设置开机启动服务
- 利用tomcat redis 实现session共享
- POJ 1064 Cable master(二分查找 求近似解)
- position定位
- 数据结构课设 银行排队问题之单队列多窗口服务
- Boost编译和配置教程(Win10+VS2013+Boost1.60.0)
- 练习一1016
- C#——判断一个数是奇偶性
- 八皇后问题(python版理解)
- 原生代码加载网络图片和Volley和Picasso的简单介绍和优缺点对比
- mybatis开始第1天