LA 3635 Pie

  二分答案

  找到最大的圆的面积作为每个人可能分到的最大的面积。

  对每个人可能分到的面积二分

  验算时,求出每个pie可以切出的最大块数,然后总的块数和需要的块数比较

  PS:(就是精度恶心)

  

#include <map>
#include <cmath>
#include <cstdio>
#include <vector>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 10005;
const double eps = 1e-6;
const double PI = acos(-1.0);
double a[maxn];
int n,m;
bool ok(double s)
{
    int sum = 0;
    for(int i = 0;i<n;++i)sum+=floor(a[i]/s);
    return sum>=m;
}
int main()
{
//    freopen("in.txt","r",stdin);
    int T;scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d",&n,&m);m++;
        double maxa = -1;
        for(int i = 0;i<n;++i)
        {
            double r;scanf("%lf",&r);
            a[i] = r*r*PI;
            maxa = max(maxa,a[i]);
        }
        double l = 0,r = maxa;
        while(r-l>eps)
        {

            double s = (l+r)/2;
            if(ok(s))l = s;
            else r = s;
        }
        printf("%.5f\n",l);
    }
    return 0;
}
时间: 2024-10-11 12:32:51

LA 3635 Pie的相关文章

LA 3635 - Pie 【二分】

Regionals 2006 >> Europe - Northwestern 3635 - Pie Time limit: 3.000 seconds My birthday is coming up and traditionally I'm serving pie. Not just one pie, no, I have a number N of them, of various tastes and of various sizes. F of my friends are com

Uva 派 (Pie,NWERC 2006,LA 3635)

依然是一道二分查找 1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 using namespace std; 5 6 const double PI=acos(-1.0); 7 int N,F; 8 double r[10001]; 9 10 bool ok(double area) 11 { 12 int sum=0; 13 for(int i=0;i<N;i++) 14 sum+=floo

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

UVALive 3635 Pie(二分法)

简单的二分法应用,循环1000次精度就满足要求了. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<string> #include<cmath> #include<map> #include<set> #include<vector> #include<algorithm>

UVALive - 3635 - Pie(二分)

题意:有F + 1(1 <= F <= 10000)个人分N(1 <= N <= 10000)个圆形派,每个人得到的派面积相同,且必须是一整块(不能够两个甚至多个派拼在一起),求每个人最多能得到多大面积的派.(误差最多到0.001) 因为答案是小数类型的,并且N高达10000,故不可暴力枚举. 可以二分枚举最大面积,然后检查是否切出来派的总个数大于等于F + 1. (判相等时不可直接判相等,需要加精度控制) #include<cstdio> #include<cs

uvalive 3635 Pie

https://vjudge.net/problem/UVALive-3635 题意: 有F+1个人要分n个蛋糕,他们得到的蛋糕的面积必须是一样的,但是每个蛋糕必须是整块的蛋糕,而不是有多块蛋糕拼成的,蛋糕的形状也可以不相同. 给出n块蛋糕各自的半径,求他们每个人能得到的蛋糕的最大面积. 思路: 使得最小值最大,那显然是二分. 二分半径,计算面积,然后枚举每个蛋糕,计算每个蛋糕可以分出来的当前面积的蛋糕会有多少个,总数是否大于等于F+1即可. 记住计算个数的时候要用floor向下取整函数,而且l

poj3311(Hie with the Pie)状压dp

题目链接:http://poj.org/problem?id=3311 解法:标准的状压dp类型,先floyd获得两两之间最短距离.然后dp[i][j]表示剩下集合i没走,已经走到j的最短距离: 代码: /****************************************************** * @author:xiefubao *******************************************************/ #pragma comment(

Designing CSS Layouts With Flexbox Is As Easy As Pie

This article is an updated excerpt of the chapter "Restyle, Recode, Reimagine With CSS3″ from our Smashing Book #3, written by Lea Verou and David Storey. - Ed. Flexible box layout (or flexbox) is a new box model optimized for UI layout. As one of th

PIE使IE支持CSS3圆角盒阴影与渐变渲染

PIE使IE支持CSS3圆角盒阴影与渐变渲染 http://css3pie.com/download/