您的位置:首页 > 其它

hdu 1551 二分

2011-11-10 09:27 106 查看
开始有点小郁闷,原因是编译器坏了,囧~

View Code

#include<stdio.h>
#include<math.h>
const double eps = 1e-9;
double p[10010];
int n,k;
int solve(double x)
{
int ans=0;
for(int i=0;i<n;i++)
ans+=int(p[i]/x);
return ans;
}
int main()
{
while(scanf("%d%d",&n,&k)!=EOF)
{
if(n+k==0) break ;
for(int i=0;i<n;i++)
{      // printf("i=%d\n",i);
scanf("%lf",&p[i]);
// printf("i=%d\n",i);
}
double ans=-1.0;
double l=0.0,r=100000.0;
double mid;
while(fabs(l-r)>eps)
{
mid=(l+r)/2;
int tmp=solve(mid);
// printf("mid=%.2lf tmp=%d\n",mid,tmp);
if(tmp>k)
l=mid;
else if(tmp==k)
{
ans=mid;
l=mid;
}
else r=mid;
}
if(ans<0.0)  printf("0.00\n");
// if(solve(mid)<k) printf("0.00\n");
else   printf("%.2lf\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: