题目大意:在做过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);
}
}