LA 3635 Pie 派 NWERC 2006
有 f + 1 个人来分 n 个圆形派,每个人得到的必须是一整块派,而不是几块拼在一起,并且面积要相同。求每个人最多能得到多大面积的派(不必是圆形)。
这题很好做,使用二分法就OK。
首先在读取所有派的半径后处理出所有派的面积,并且记录最大的那个派的面积。然后从 0 ~ maxsize 二分枚举一下,就能得到答案。
此外,这道题最后输出保留小数位数可以是 3, 4, 5,都可以。
附AC代码:
1: #include <stdio.h>
2: #include <math.h>
3: #include <iostream>
4: #include <cstdarg>
5: #include <algorithm>
6: #include <string.h>
7: #include <stdlib.h>
8: #include <string>
9: #include <list>
10: #include <vector>
11: #include <map>
12: #define LL long long
13: #define M(a) memset(a, 0, sizeof(a))
14: using namespace std;
15: void Clean(int count, ...)
16: {
17: va_list arg_ptr;
18: va_start (arg_ptr, count);
19: for (int i = 0; i < count; i++)
20: M(va_arg(arg_ptr, int*));
21: va_end(arg_ptr);
22: }
23:
24: const double PI = acos(-1.0);
25: double buf[10009];
26: int n, f;
27:
28: bool Deal(double size)
29: {
30: int res = 0;
31: for (int i = 1; i <= n; i++)
32: res += floor(buf[i] / size);
33: return (res >= (f + 1));
34: }
35:
36: int main()
37: {
38: int T;
39: scanf("%d", &T);
40: while (T--)
41: {
42: double m = -1;
43: scanf("%d%d", &n, &f);
44: for (int i = 1; i <= n; i++)
45: {
46: int r;
47: scanf("%d", &r);
48: buf[i] = PI * r * r;
49: m = max(m, buf[i]);
50: }
51: double tmp = 0.0;
52: while (m - tmp > 1e-5)
53: {
54: double p = (m + tmp) / 2.0;
55: if (Deal(p)) tmp = p;
56: else m = p;
57: }
58: printf("%.5lf\n", tmp);
59: }
60: return 0;
61: }
LA 3635 Pie 派 NWERC 2006的更多相关文章
- UVA 12097 LA 3635 Pie(二分法)
Pie My birthday is coming up and traditionally I'm serving pie. Not just one pie, no, I have a numbe ...
- LA 3635 Pie
题意:给出n个圆,分给n+1个人,求每个人最多能够得到多大面积的圆 二分每个人得到的圆的面积 #include<iostream> #include<cstdio> #incl ...
- 集合栈计算机(The SetStack Computer, ACM/ICPC NWERC 2006,Uva12096)
集合栈计算机(The SetStack Computer, ACM/ICPC NWERC 2006,Uva12096) 题目描述 有一个专门为了集合运算而设计的"集合栈"计算机.该 ...
- Java实现派(Pie, NWERC 2006, LA 3635)
题目 有F+1个人来分N个圆形派,每个人得到的必须是一整块派,而不是几块拼在一起,且面积要相同.求每个人最多能得到多大面积的派(不必是圆形). 输入的第一行为数据组数T.每组数据的第一行为两个整数N和 ...
- Uva 派 (Pie,NWERC 2006,LA 3635)
依然是一道二分查找 #include<iostream> #include<cstdio> #include<cmath> using namespace std; ...
- LA 3635 派
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...
- UVALive 3635 Pie 切糕大师 二分
题意:为每个小伙伴切糕,要求每个小盆友(包括你自己)分得的pie一样大,但是每个人只能分得一份pie,不能拿两份凑一起的. 做法:二分查找切糕的大小,然后看看分出来的个数有没有大于小盆友们的个数,它又 ...
- UVa Live 3635 - Pie 贪心,较小的可能不用 难度: 2
题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...
- UVaLive 3635 Pie (二分)
题意:有f+1个人来分n个圆形派,每个人得到的必须是一个整块,并且是面积一样,问你面积是多少. 析:二分这个面积即可,小了就多余了,多了就不够分,很简单就能判断. 代码如下: #pragma comm ...
随机推荐
- CodeIgniter API
http://apigen.juzna.cz/doc/EllisLab/CodeIgniter/tree.html Classes CI_Benchmark CI_Calendar CI_Cart C ...
- 8天学通MongoDB——第三天 细说高级操作
原文地址:http://www.cnblogs.com/huangxincheng/archive/2012/02/21/2361205.html 今天跟大家分享一下mongodb中比较好玩的知识,主 ...
- win7 64 + Ubuntu 14.04.1 64双系统安装,详解UEFI ~ GPT和legacy ~ MBR区别
win7 64 + Ubuntu 14.04.1 64双系统安装 背景:我的笔记本之前的系统是window 7 64 + Ubuntu 14.04.1,用UEFI引导系统.安装过程是先装的win7,再 ...
- Arraylist和Vector的区别与HashMap和Hashtable的区别
1.ArrayList和HashMap都是线程异步的,所以它们的特点是效率高,但是安全性低: 2.Vector和Hashtable都是线程同步的,所以它们的特点是效率低,但是安全性高.
- Tomcat日志问题
[Tomcat日志设定][tomcat控制台日志][log4j日志] 1 Tomcat 日志概述 Tomcat 日志信息分 为 两 类 : 一是运行中的日志,它主要 记录 运行的一些信息,尤其是一些异 ...
- Linux基础--文件压缩
1.compress [root@linux ~]# compress [-dcr] 档案或目录 参数: -d:用来解压缩的参数 -r:可以连同目录下的档案也同时给予压缩呢! -c:将压缩数据输出成为 ...
- Centos环境下部署游戏服务器-自动化
计算机是没有智力的,只会接受指令,运行指令,得出结果.因此就算你让它重复做一件事多少次,它也学不会自动去做这件事.对于重复繁琐的事情,做为一个懒惰的程序员,必须告诉机器去做这件事情,然后就行了,而不是 ...
- FMX的综合评价
Cliff: 我个人觉得FMX值得学,因为可以做Mac软件,可以做Windows下的DirectUI,可以开发iOS/Android,而且是可视化开发,可利用RTL一切函数,包括可使用所有非可视控件. ...
- WPF之快速实现拖拽功能
场景:工具栏上有很多图标(一个图标代表一种控件),可以左键按下图标,然后拖拽到设计区域创建一个个的控件. 实现:1.给工具栏上的图标添加MouseLeftDown和MouseMove事件,前者事件是为 ...
- 在CentOS 7中安装与配置Tomcat-8方法
安装前提 在CentOS 7中安装与配置JDK8 安装tomcat apache-tomcat-8.0.14.tar.gz文件上传到/usr/local中执行以下操作: [root@localhos ...