POJ 3122 Pie【二分答案】

来源:互联网 发布:php rbac权限管理系统 编辑:程序博客网 时间:2024/05/20 08:00

题意:求每个人能分到的所有蛋糕中最大的面积,像是第1个蛋糕分到2,第2个分到4,那结果是4

关于精度问题 我无力吐槽

本来是二分半径的,结果还是转分面积了

#include <iostream>#include <cstdio>#include <cmath>const double PI = acos(-1.0);//acos(1)会编译错误...//#define PI 3.1415926535898using namespace std;int m,n;double a[10010];int k;int too(double mid){    int ant = 0;    for(int i=0;i<n;i++)    {        ant += (int)(a[i]/mid);    }    if(ant < k)      return 0;    return 1;}int main(){    int t;    scanf("%d",&t);    while(t--)    {        scanf("%d%d",&n,&k);        k++;        double temp;        double maxp = -1.0;        double l,mid;        double r = -0.5;        for(int i=0;i<n;i++){            scanf("%lf",&a[i]);            a[i] = a[i] * a[i] * PI;            if(a[i] - r > 0.00001)               r = a[i];        }        l = 0.00000;        while( r - l > 1e-6)        {            mid = (l + r)/2;            if(too(mid))                l = mid ;            else                r = mid ;        }        printf("%.4lf\n",mid);    }    return 0;}


0 0
原创粉丝点击