• POJ3122 Pie(二分)


    题目链接:http://poj.org/problem?id=3122

    题意:一堆人分蛋糕,每人蛋糕大小一样,求最大能分多少,蛋糕必须是整块整块的,不能两块拼一起。然后注意输入F个人最后要分F+1份。

    思路:很简单很水,但是精度处理很恶心,wa了很多发,直接二分蛋糕的半径就行了

    AC代码:

     1 #include<iostream>
     2 #include<vector>
     3 #include<cstdio>
     4 #include<algorithm>
     5 #include<cmath>
     6 #include<cstring>
     7 #include<queue>
     8 #include<map>
     9 #define p 3.14159265359
    10 using namespace std;
    11 const int maxn = 1e4+5;
    12 const double eps = 1e-8;
    13 double pie[maxn];
    14 int N,F;
    15 bool check(double x){
    16     int cnt = 0;
    17     for(int i = 0;i<N;i++){
    18         cnt+=(int)(pie[i]*pie[i]/(x*x));//每次check一下是否满足大于F个 
    19     }
    20     return cnt>=F;
    21 }
    22 int main(){
    23     int t;
    24     scanf("%d",&t);
    25     while(t--){
    26         scanf("%d%d",&N,&F);
    27         F+=1;
    28         double MAX = 0.0;
    29         for(int i = 0;i<N;i++){
    30             scanf("%lf",&pie[i]);
    31             MAX = max(MAX,pie[i]);//求出最大半径 
    32         }
    33         double l = 0, r = MAX*2;//左右区间 
    34         double mid;
    35         while(l+eps<r){
    36             mid = (l+r)/2;
    37             if(check(mid)){
    38                 l = mid;
    39             }
    40             else{
    41                 r = mid;
    42             }
    43         }
    44         printf("%.4lf
    ",l*l*p);
    45     }
    46     return 0;
    47 }
  • 相关阅读:
    Tarjan-割点&桥&双连通
    树状数组
    loli的搜索测试-5
    思维题
    生成树
    贪心
    loli的搜索测试-4
    树链剖分
    基于AHK的上课自动签到
    用列表实现栈
  • 原文地址:https://www.cnblogs.com/AaronChang/p/12171854.html
Copyright © 2020-2023  润新知