POJ 1064_Cable master
2016-02-08 21:33
267 查看
题意:
给定一系列长度的电缆,将他们切成K条相等长度的电缆,问每条最长有多长?分析:
对长度进行二分,判断能否满足K条。二分搜索:
在求解最大化或最小化问题中,能够比较简单的判断条件是否满足,那么使用二分搜索法可以很好地解决问题。
结束判定:
正常处理整数时,对于[l,r)结束范围即为l=r,但是小数的处理就涉及精度的要求了。
在输出小数时,需要设置合理的结束条件满足精度的要求,可以指定循环次数作为终止条件,一次循环把区间的范围缩小一半,100次的循环可达到10−30的精度范围。也可以把终止条件设置成(r−l)>EPS,即指定一个区间大小。
在输出时注意处理一下。
代码:
#include<iostream> #include<cstdio> #include<cmath> using namespace std; const int maxn = 10005, INF = 200005; double a[maxn]; int N, K; int judge(double mid) { int cnt = 0; for(int i = 0; i < N; i++){ cnt += floor(a[i]/mid); } if(cnt>=K) return 1; else return 0; } int main (void) { scanf("%d%d",&N,&K); for(int i = 0; i < N; i++) scanf("%lf",&a[i]); double l = 0, r = INF, mid; for(int i = 0; i < 100; i++){ mid = l + (r - l)/2; if(judge(mid)) {l = mid ;} else r = mid; } printf("%.2f\n", floor(l*100)/100); }
floor函数差点忘了都
相关文章推荐
- java基础练习 特殊的数字
- BestCoder Round #71 (div.2) 1002KK's Point
- Android - 设置adb的usb连接配置
- python requests模块的安装和使用方法
- poj 3744 Scout YYF I 矩阵快速幂 概率论
- vxWorks互斥信号量示例
- Web Service Jaxws注解、CXF注解和发布
- 数据结构:线性表
- DNSPod各个套餐的DNS地址
- 第一章:一个简单的Web服务器
- 一个问题:关于类型转换Type Cast(汇编讲解 as 语法)
- Send push notification on Apple (APNS) on c#.net
- Runtime_消息转发机制
- UIDynamic物理引擎
- Delphi + Asm - TBits类的学习
- 使用拦截器或者AOP实现权限管理(OA系统中实现权限控制)
- LeetCode 48. Rotate Image My Submissions Question (矩阵旋转)
- SSL/TLS
- java基础练习 杨辉三角
- HDU 3572 Task Schedule(最大流)