hdu Pie
這道題是一道二分搜索的題,首先計算出最大的平均體積:mx=V總/f;然后去left=0,right=mx,mid=(left+right)/2進行二分搜索,當所有pi分割出的mid的個數是大于等于f時,說明這個mid是滿足條件的,一直搜索知道找到最大的mid;這題的核心還是精度的問題。不得不說這題對精度的要求實在是太高了。首先是mi的精度,當我用的是mi=1e-8時,會超時,慢慢將mi降到1e-6。后來又發現當將pi定義為3.1415926535是個會wa掉,后來參考了一下別人的代碼才知道原來double pi = acos(-1.0) 這樣定義pi精度會更高。。。也是醉了。
#include"iostream" #include"stdio.h" #include"algorithm" #include"string.h" #include"cmath" #define mi 1e-6 //#define pi 3.1415926535 using namespace std; double pi = acos(-1.0); double v[10005]; int f,n; bool test(double x) {int i,num=0;for(i=0;i<n;i++){num+=(int) (v[i]/x);}if(num>=f) return true;else return false; } int main() {int t;cin>>t;while(t--){int i,j;cin>>n>>f;f++;double r,left,right,mid,mx,V=0;for(i=0;i<n;i++) {cin>>r;v[i]=pi*r*r;V+=v[i];}mx=V/f;left=0;right=mx;while(right-left>mi){mid=(right+left)/2.0;if(test(mid)) left=mid;else right=mid;}printf("%.4lf\n",mid);}return 0; } View Code?
轉載于:https://www.cnblogs.com/acm-jing/p/4321459.html
總結
- 上一篇: [经典面试题]二叉树宽度
- 下一篇: Jquery 获取select,radi