题目的整体思想就是二份答案,将复杂度降低。
1#include<stdio.h> 2#include<math.h> 3double ri[10005]; 4int judge(double m,int pie_n,int friend_n,double *p) 5{ 6 int i,sum=0; 7 for(i=1;i<=pie_n;i++) 8 { 9 sum+=int((p[i]*acos(-1))/m); 10 } 11 if(sum>friend_n) 12 return 1; 13 else 14 return 0; 15} 16double abs(double ll) 17{ 18 if(ll<0) 19 return ll*(-1); 20 else 21 return ll; 22} 23int main() 24{ 25 int t,pie_n,friend_n,i; 26 scanf("%d",&t); 27 while(t--) 28 { 29 double mm=0; 30 scanf("%d%d",&pie_n,&friend_n); 31 for(i=1;i<=pie_n;i++) 32 { 33 scanf("%lf",&ri[i]); 34 ri[i]=ri[i]*ri[i]; 35 if(ri[i]>mm) 36 mm=ri[i]; 37 } 38 double min=0,max=mm*acos(-1),mid; 39 while(abs(max-min)>0.000005) 40 { 41 mid=(max+min)/2; 42 if(judge(mid,pie_n,friend_n,ri)) 43 { 44 min=mid; 45 } 46 else 47 { 48 max=mid; 49 } 50 } 51 printf("%.4lf\n",mid); 52 } 53 return 0; 54} 55
|
|
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
---|
30 | 31 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|
公告
决定从线程开始!!
常用链接
留言簿(6)
随笔档案
搜索
最新评论
阅读排行榜
评论排行榜
|
|