您的位置:首页 > 其它

hdu 1969 二分

2014-07-23 12:26 295 查看
这道题精度不是给的 1e-3吗

为啥要1e-7才能过~~

为和~~

附上代码:

二分

#include <stdio.h>

#include <string.h>

#include <math.h>

#include <algorithm>

#define pi acos(-1.0)

using namespace std;

double a[10005];

int n,m;



int check(double mid)

{

int i;

int sum = 0;

for(i = 0; i<n; i++)

{

sum+=int(a[i]/mid);

if(sum>=m)

return 1;

}

return 0;

}



int cmp(double a,double b)

{

return a>b;

}



int main()

{

int t,i,j;

double l,r,mid;

scanf("%d",&t);

while(t--)

{

scanf("%d%d",&n,&m);

m++;

for(i = 0; i<n; i++)

{

scanf("%lf",&a[i]);

a[i] = a[i]*a[i]*pi;

}

sort(a,a+n,cmp);

l = 0;

r = a[0];

if(m<n)

n = m;

while(r-l>1e-7)

{

mid = (r+l)/2;

if(check(mid))

l = mid;

else

r = mid;

}

printf("%.4lf\n",r);

}



return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: