码迷,mamicode.com
首页 > 其他好文 > 详细

(二分)分蛋糕问题

时间:2020-02-20 00:03:13      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:半径   二分   cos   cin   false   最大   space   iostream   include   

题意:N种蛋糕,每个半径给出,要分给F+1个人,要求每个人分的体积一样(形状可以不一样),而且每人只能分得一种蛋糕(不能多种蛋糕拼在一起),求每人最大可以分到的体积。
输入:
3
3 3
4 3 3
1 24
5
10 5
1 4 2 3 4 5 6 5 4 2
输出:
25.1327
3.1416
50.2655

#include <stdio.h>
#include <iostream>
#include <math.h>

using namespace std;
const double PI=acos(-1.0);
int n,f;
double s[105];
bool check(double x){
    int peo=0;
    for(int i=0;i<n;i++){
        peo+=(int)(s[i]/x);
    }
    if(peo>=f+1) return true;
    else return false;
}
int main(){    
    cin>>n>>f;
    double l=0,r=0,mid=0;
    for(int i=0;i<n;i++){
        cin>>s[i];
        s[i]=s[i]*s[i]*PI;
        r=max(r,s[i]);
    }
    while(r-l>1e-5){
        mid=(l+r)/2;
        if(check(mid)){
            l=mid;
        }
        else r=mid;
    }
    cout<<mid;
    return 0;
}

 

(二分)分蛋糕问题

标签:半径   二分   cos   cin   false   最大   space   iostream   include   

原文地址:https://www.cnblogs.com/xusi/p/12333824.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!