LA 3635 派

Posted 树的种子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LA 3635 派相关的知识,希望对你有一定的参考价值。

题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1636

题意:

f+1个人,来分 n 个圆形派,每个人只能从一个派中拿,也就是说,不能从两个里面去拼。

求每个人最大的面积。

分析:

二分。

二分能够得到的最大面积x,怎么判断是否可以分到呢? 把每一个派分成 x,有多少份>=f+1,即可;

技术分享
 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 const int maxn = 10000 + 5;
 6 const double PI = acos(-1.0);
 7 
 8 int n,f;
 9 double A[maxn];
10 
11 bool ok(double x) {
12     int sum = 0;
13     for(int i=0;i<n;i++) {
14         sum +=(A[i]/x);
15     }
16     if(sum>=f+1)
17         return true;
18     return false;
19 }
20 
21 int main()
22 {
23     int t;
24     scanf("%d",&t);
25     while(t--) {
26         scanf("%d%d",&n,&f);
27         double l=0;
28         double r=-1;
29         for(int i=0;i<n;i++) {
30             int x;
31             scanf("%d",&x);
32             A[i] = PI*x*x;
33             r=max(r,A[i]);
34         }
35 
36         while(r-l>1e-5) {
37             double M = (l+r)/2;
38             if(ok(M)) l = M;
39             else r = M;
40         }
41         printf("%.4lf\n",l);
42     }
43     return 0;
44 }
View Code

 

以上是关于LA 3635 派的主要内容,如果未能解决你的问题,请参考以下文章

LA3635 Pie (二分法)

UVALive - 3635 - Pie(二分)

树莓派搭建网站

HDU 3635 Dragon Balls(带权并查集)

POJ3635 Full Tank?

POJ 3635 Full Tank?