题目描述

输入格式

输出格式

输入输出样例

输入样例#1

3
3 3
4 3 3
1 24
5
10 5
1 4 2 3 4 5 6 5 4 2

输出样例#1

25.1327
3.1416
50.2655

题意简述

题目描述

有\(F+1\)个人来分\(N\)个圆形派,每个人得到的必须是一整块派,而不是几块拼在一起。而且派的面积要相同。求每个人最多得到多大面积的派(不必是圆形)

输入格式

输入的第一行为数据组数\(T\)。

每组数据的第一行为两个整数\(N\)和\(F(1<=N,F<=10000)\);

第二行为\(N\)个整数\(r_i(1<=r_i<=10000)\),即各个派的半径。

输出格式

对于每组数据,输出每个人得到的派的面积的最大值,精确到\(10^{-3}\)。

题解

此题可以使用二分答案的方法,

把问题转换成“是否每个人都可以得到一块面积为\(x\)的派”。

这样的转换就使问题增加了一个条件。

求解的目标就变成了“这一些条件是不是矛盾”。

如果有矛盾,是怎样的矛盾呢?

只有一种矛盾:\(x\)太大,满足不了所有的\(F+1\)个人。

这样,我们就只需要计算一共可以切多少份面积为\(x\)的派,

然后看一看这个数目够不够\(F+1\)即可。

由于派不可以拼起来,

因此一个半径为\(r\)的派就只可以切出\(\lfloor \frac{\pi \times r^{2}}{x} \rfloor\) 个派,

其余的部分就只能浪费了。

然后把所有能切出来的份数相加即可。

代码

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cctype> using namespace std; inline int gi()
{
int f = 1, x = 0; char c = getchar();
while (c < '0' || c > '9') { if (c == '-') f = -1; c = getchar();}
while (c >= '0' && c <= '9') { x = x * 10 + c - '0'; c = getchar();}
return f * x;
} const double pi = acos(-1.0), eps = 1e-4;
int n, m, t;//m即为题意中的F
double a[10003], ans; inline bool check(double mian)//二分答案的判断函数
{
int cnt = 0;
for (int i = 0; i < n; i++)
{
cnt = cnt + floor(a[i] / mian);//加上能拼成的块数
}
return cnt > m;//判断是否大于等于m+1
} int main()
{
t = gi();
while (t--)//多组数据
{
n = gi(), m = gi();
double p = -1;
for (int i = 0; i < n; i++)
{
int R = gi();
a[i] = pi * R * R, p = max(p, a[i]);//计算每份派的面积及最大派的面积
}
double l = 0, r = p;
while ((r - l) > eps)//开始二分答案
{
double mid = (l + r) / 2;
if (check(mid))
{
l = mid;
}
else
{
r = mid;
}
}
printf("%0.4lf\n", l);//输出
}
return 0;//结束
}

题解【UVA12097】Pie的更多相关文章

  1. 【题解】PIE [POI2015] [P3585]

    [题解]\(PIE\) \([POI2015]\) \([P3585]\) 逼自己每天一道模拟题 传送门:\(PIE\) \([POI2015]\) \([P3585]\) [题目描述] 一张 \(n ...

  2. 题解报告:hdu 1969 Pie(二分)

    Problem Description My birthday is coming up and traditionally I'm serving pie. Not just one pie, no ...

  3. 题解【Codeforces859C】Pie Rules

    题面 一道需要一定思考的 \(\text{DP}\) . 设 \(dp_i\) 表示第 \(i\) 步走的人能得到的最大分数, \(sum_i\) 表示 \(\sum_{j=i}^n a_j\) ,即 ...

  4. 1644 免费馅饼 题解(c++)(S.B.S.)

    1644 免费馅饼(巴蜀oj上的编号) 题面:          SERKOI最新推出了一种叫做“免费馅饼”的游戏.         游戏在一个舞台上进行.舞台的宽度为W格,天幕的高度为H格,游戏者占 ...

  5. Codeforces Beta Round #51 C. Pie or die 博弈论找规律 有趣的题~

    C. Pie or die Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/55/problem/ ...

  6. hdoj 1969 Pie【二分】

    Pie Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  7. BZOJ1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富

    1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 459  Sol ...

  8. Vitaliy and Pie(模拟)

    Vitaliy and Pie Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Su ...

  9. Pie(求最小身高差,dp)

    Pie Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

随机推荐

  1. 【剑指Offer】24、二叉树中和为某一值的路径

    题目描述 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长度大 ...

  2. 简单记账本APP开发一

    在对Android的一些基础的知识有了一定了解,以及对于AndroidStudio的如何使用有了 一定的熟悉后,决定做一个简单的记账本APP 开发流程 1.记账本的页面 2.可以添加新的账目 (一)页 ...

  3. nginx 配置 强制访问https

    使用nginx的301状态码 server { listen ;     if ($scheme = 'http') {    return 301 https://$server_name$requ ...

  4. linux100讲——80 系统函数库介绍

    1.系统自建了函数库,可以在脚本中引用 /etc/init.d/functions 2.自建函数库 使用 source 函数脚本文件 “导入”函数 3. vim /etc/init.d/functio ...

  5. window服务session隔离

    在window服务中抓取窗体是做不到的,因为window系统的session隔离机制:如果想要调用外部程序,可以通过 创建代理进程 进行操作(通过非托管代码CreateProcessAsUser函数进 ...

  6. A Bug's Life____并查集

    English preparation: falsify     伪造:篡改:歪曲:证明...虚假 the sexual behavior of a rare species of bugs. 一种稀 ...

  7. 深入浅出Mybatis系列六-objectFactory、plugins、mappers简介与配置

    注:本文转载自南轲梦 注:博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 上篇文章<深入浅出Mybatis系列(五)---TypeHandler简介及配 ...

  8. jsonp 完成跨域请求注意事项

    jsonp 不支持post方式请求跨域数据 可以使用get方式请求 !jsonp 不支持post方式请求跨域数据 可以使用get方式请求 !jsonp 不支持post方式请求跨域数据 可以使用get方 ...

  9. 洛谷P 1427 小鱼的数字游戏

    题目描述 小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字(长度不一定,以0结束,最多不超过100个,数字不超过2^32-1),记住了然后反着念出来(表示结束的数字0就不要念出来了).这对小鱼的 ...

  10. ansible-主机分组

    一.安装ansible yum install ansible -y ansible --version //查看版本,没有报错即安装成功 二.ansible主机定义与分组 1. ansible配置文 ...