(step4.1.4)hdu 1551(Cable master——二分法)

来源:互联网 发布:什么微单最好 一款知 编辑:程序博客网 时间:2024/05/18 02:20

题目大意:在做过hdu1969的前提下,这道题其实不需要知道什么意思就可以做了。。。。哈哈,我就是这样的。。如果需要明白是什么意思的

看一下我的hdu1969的解题报告就行了



解题思路:二分法

1)对于二分法、三分法的相关题目。精度的大小是一个很重要的问题。如何确定呢。。。我们可以这样思考:

根据题目给定的范围来确定。。如本题中有这么一句话"All cables are at least 1 centimeter and at most 100 kilometers in length"..所以精度应该是>=1e-8


代码如下:

/* * 1551_1.cpp * *  Created on: 2013年8月14日 *      Author: Administrator */#include <stdio.h>int N,F;double V[10001];bool test(double x){int num = 0;int i = 0;for(i = 1 ; i <= N ;++i){num += int(V[i]/x);}if(num>=F){return true;}else{return false;}}int main(){while(scanf("%d%d",&N,&F),N||F){int i ;double sum = 0;for( i = 1 ; i <= N ; ++i){scanf("%lf",&V[i]);sum += V[i];}double max = sum/F;double l = 0;double r = max;while( r - l > 1e-10){double mid = (l+r)/2;if(test(mid)){l = mid + 1e-11;}else{r = mid - 1e-11;}}printf("%.2lf\n",(l+r)/2);}}


原创粉丝点击