zoukankan      html  css  js  c++  java
  • 【POJ】3122 Pie [二分查找]

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

     二分每块饼的体积。为了保证精度,可以先二分半径的平方r*r,最后再乘以PI。要注意一点,要分的人数要包括自己,及f+1。

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    using namespace std;
    const int N=1e4+11;
    const double PI = acos(-1.0);
    const double EPS = 1e-6;
    int n,m;
    double a[N];
    double INF;
    
    void init()
    {
        INF=0;
    }
    
    int check(double x)
    {
        int cnt=0;
        for(int i=0;i<n;i++){
            cnt+=(int)a[i]/x;
        }
        return cnt;
    }
    double BinSearch(double* a)
    {
        double head=0, tail=INF;
        double mid;
        
        while(head+EPS<tail){
            mid=(head+tail)/2.0;
            if(check(mid)<m){
                tail=mid;
            } else {
                head=mid;
            }
        }
        return mid;
    }
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--){
            init();
            scanf("%d%d",&n,&m);
            m++;
            for(int i=0;i<n;i++){
                scanf("%lf",&a[i]);
                a[i]=a[i]*a[i];
                if(a[i]>INF) INF=a[i];
            }
            printf("%.4f
    ",BinSearch(a)*PI);        
        }
        
        return 0;
    }
  • 相关阅读:
    shell脚本程序练习
    02、重定向和管道符
    01、bash的基本特性
    python--03day
    python--02day
    python--01day
    Django之Form
    Django之ajax
    csrf的中间件
    Django之中间件
  • 原文地址:https://www.cnblogs.com/sxiszero/p/6511884.html
Copyright © 2011-2022 走看看