• POJ 3122 Pie


    题目大意:

    给出n个pie的直径,有f+1个人,如果给每人分的大小相同(形状可以不同),每个人可以分多少。要求是分出来的每一份必须出自同一个pie,也就是说当pie大小为3,2,1,只能分出两个大小为2的份,剩下两个要扔掉。


    解题思路:

    对每一个人分的大小进行二分查找,注意输出要用cout。


    下面是代码:

    #include <stdio.h>
    const double pi=3.14159265359;
    const double esp=1e-6;
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            int n,f,i,j,cnt;
            scanf("%d%d",&n,&f);
            f++;
            double a[10005],low=0,high=0,mid,in;
            for(i=0;i<n;i++)
            {
                scanf("%lf",&a[i]);
                a[i]*=a[i];
                if(high<a[i])
                {
                    high=a[i];
                }
            }
            while(high-low>esp)
            {
                mid=(low+high)/2;
                cnt=0;
                for(i=0;i<n;i++)
                {
                    in=a[i];
                    while(in>=mid)
                    {
                        in-=mid;
                        cnt++;
                    }
                }
                if(cnt<f)
                {
                    high=mid;
                }
                else
                {
                    low=mid;
                }
            }
            printf("%.4f
    ",mid*pi);
        }
        return 0;
    }
    


  • 相关阅读:
    对类对象使用new时地址分配的情况
    c++堆与栈的简单认识
    多态公有继承
    Cookie & Session & JSP入门
    Response & ServletContext
    Java网络编程篇文章阅读顺序
    URL编程
    UDP网络编程
    TCP网络编程
    InetAddress类的使用
  • 原文地址:https://www.cnblogs.com/fuhaots2009/p/3503439.html
Copyright © 2020-2023  润新知