zoukankan      html  css  js  c++  java
  • poj 3122 Pie 二分答案

    题目地址: http://poj.org/problem?id=3122

    还是找到了单调函数--分给m人对最大尺寸f(m)  是m的不增函数,那么具体给定m是,二分f(m)使用>=f+1  l=mid  而不是>来保证尽可能取得大

    细节: 应该直接二分答案,而不是算出比较精确的半径平方,最后*PI输出,会产生误差,然后PI用arccos(-1),否则也会wa

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    //const double PI=3.1415926535;    //这样写就wa了  是精度不够?
    const double PI=acos(-1.0);
    int N,F;
    int a[10005];
    
    long long  person_num(double  x)
    {
       long long  ans=0;
       for(int i=0;i<N;i++)
        {
           ans+=a[i]*a[i]*PI/x;
        }
    
       return ans;
    }
    
    int main()
    {
       int T;
       cin>>T;
    
       while(T--)
        {  double max_size=0;
           cin>>N>>F;
           double  l=0,r=1000000000;
           // 10000,0000  小了
    
           double  mid;
           while(r-l>=1e-4)
           {
              mid=(l+r)/2;
              if(person_num(mid)>=F+1)  l=mid;
              else r=mid;
           }
    
           printf("%.4lf
    ",l);
        }
    }
    


  • 相关阅读:
    JVM如何执行方法调用
    JVM如何实现反射
    JVM是如何处理异常的
    Java类加载
    windows-Kafka安装
    Google Eventbus简单使用
    队列c#版
    python 元类

    Spring Mvc 笔记二之异常和文件上传
  • 原文地址:https://www.cnblogs.com/814jingqi/p/3339248.html
Copyright © 2011-2022 走看看