zoukankan      html  css  js  c++  java
  • UVA 12097 Pie(二分答案)

    题目链接:

    这道题虽然不是一道典型的二分答案题,但同样也可以用二分答案来做。

    来二分面积为$area$的派,然后看看条件是否矛盾。

    与其矛盾的便是$f+1$个人是否每个人都会有。

    一个半径为$r$的派只能切出$floor(pi r^2/x)$块。

    AC代码:

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cmath>
     4 #include<algorithm>
     5 using namespace std;
     6 
     7 const double PI=acos(-1.0);
     8 const int maxn=10005;
     9 
    10 int n,f;
    11 double A[maxn];
    12 
    13 bool ok(double area){
    14     int sum=0;
    15     for(int i=0;i<n;i++) sum+=floor(A[i]/area);
    16     return sum>=f+1;
    17 }
    18 
    19 int main(){
    20     int T;
    21     scanf("%d",&T);
    22     while(T--){
    23         scanf("%d%d",&n,&f);
    24         double maxa=-1;
    25         for(int i=0;i<n;i++){
    26             int r; scanf("%d",&r);
    27             A[i]=PI*r*r;
    28             maxa=max(maxa,A[i]); 
    29         }
    30         double L=0,R=maxa;
    31         while(R-L>0.00001){
    32             double M=(L+R)/2;
    33             if(ok(M)) L=M; else R=M;
    34         }
    35         printf("%.4lf
    ",L);
    36     }
    37     return 0;
    38 }
    AC代码
  • 相关阅读:
    51Nod1119
    stoi
    坑爹大质数
    USACO07OPEN Cheapest Palindrome
    USACO08NOV Mixed Up Cows
    USACO12FEB Nearby Cows
    SCOI2009 粉刷匠
    USACO16OPEN 248
    POI2014 PTA-Little Bird
    USACO17FEB Why Did the Cow Cross the Road I G
  • 原文地址:https://www.cnblogs.com/New-ljx/p/12301195.html
Copyright © 2011-2022 走看看