【小数二分】

题目:3122 -- Pie (poj.org)

题意:

有n个派,f+1个人,给每个人分一块同样体积的派,可以破坏派,问每个人分得的派的最大体积为多少,答案保留四位小数。

题解:采用小数二分做(第一次接触到小数二分的题,注意小数二分与整数二分的不同)

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include<cstdio>
#include<cmath>
#define PI acos(-1.0)
using namespace std;
int n,friendsnum;
double a[10010],maxsize,cul;
int judge(double size){
     int sum=0;
     for(int i=0;i<n;i++)
     {
         sum+=(int)(a[i]/size);
         if(sum>=friendsnum) return 1;
     }
     return 0;
}
double binary_search(){
     double high=cul/friendsnum,low=maxsize/friendsnum;
     double size=(high+low)/2;
     while(high-low>0.0000001)
     {
         if(judge(size)) low=size;
         else high=size;
         size=(high+low)/2;
     }
     return size;   
}
int main(){
     int t;
     scanf("%d",&t);
     while(t--)
     {
         maxsize=0;cul=0;
         scanf("%d%d",&n,&friendsnum);
         friendsnum++;
         int temp;
         for(int i=0;i<n;i++)
         {
             scanf("%d",&temp);
             a[i]=(temp*temp*PI);
             cul+=a[i];
             if(maxsize<a[i]) maxsize=a[i];
         }
         double answer=binary_search();
         printf("%.4f\n",answer);
     }
     return 0;
}

  

posted @   and3434  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示