|NOIOJ|二分|05:派

原创 2016年05月31日 18:13:09
描述

我的生日要到了!根据习俗,我需要将一些派分给大家。我有N个不同口味、不同大小的派。有F个朋友会来参加我的派对,每个人会拿到一块派(必须一个派的一块,不能由几个派的小块拼成;可以是一整个派)。

我的朋友们都特别小气,如果有人拿到更大的一块,就会开始抱怨。因此所有人拿到的派是同样大小的(但不需要是同样形状的),虽然这样有些派会被浪费,但总比搞砸整个派对好。当然,我也要给自己留一块,而这一块也要和其他人的同样大小。

请问我们每个人拿到的派最大是多少?每个派都是一个高为1,半径不等的圆柱体。

输入 第一行包含两个正整数N和F,1 ≤ N, F ≤ 10 000,表示派的数量和朋友的数量。
第二行包含N个1到10000之间的整数,表示每个派的半径。 输出 输出每个人能得到的最大的派的体积,精确到小数点后三位。
样例输入
3 3
4 3 3
样例输出
25.133

二分答案题目,与之前跳房子月度开销不同的是这里有浮点数,最好开double不要开float 这题细节比较多:1、pi的精度最好多一点,3.1415926535892、自己要吃,f要加一(我做题时就忘了)3、由于浮点数,原来l+1<r改为l+0.000001<r4、ans用整数以免出现几个不同品种的蛋糕拼在一起5、然后r取最大蛋糕体积即可Ps:二分越来越熟练了,做题也快了很多!

参考代码:
#include<cstdio>
const double pi=3.141592653589;
int n,f;
double mid,l=0,r=0;
double cake[10200];
void init() {
	scanf("%d%d", &n, &f);
	f++; //fix:自己也要吃 
	for (int i=1;i<=n;i++) {
		int ran;
		scanf("%d", &ran);
		cake[i] = ran*ran*pi;
		if (cake[i]>r) r = cake[i];
	}
	r++; 
}
int check(double x) {// 比f多 return 1
	int ans=0;
	for (int i=1;i<=n;i++) {
		ans += cake[i] / x;
	}
	if (ans>=f) return 1; else return 0; 
}
void go() {
	while (l+0.000001<r) {
		mid = (l+r)/2;
		if (check(mid)) l=mid; else r=mid;	
	}
	printf("%.3f", l);
}
int main() {	
	init();
	go();
	return 0;
}


版权声明:博客停更,请到"再见,CSDN"文章中找新博客地址

|NOIOJ|二分|04:网线主管

描述 仙境的居民们决定举办一场程序设计区域赛。裁判委员会完全由自愿组成,他们承诺要组织一次史上最公正的比赛。他们决定将选手的电脑用星形拓扑结构连接在一起,即将它们全部连到一个单一的中心服务器。为了组...
  • Darost
  • Darost
  • 2016年05月31日 19:10
  • 371

|NOIOJ|二分|06:月度开销

描述 农夫约翰是一个精明的会计师。他意识到自己可能没有足够的钱来维持农场的运转了。他计算出并记录下了接下来 N (1 ≤ N ≤ 100,000) 天里每天需要的开销。 约翰打算为连续的M (1 ...
  • Darost
  • Darost
  • 2016年05月31日 06:36
  • 1836

|NOIOJ|NOIP2015|二分|10:河中跳房子

描述 每年奶牛们都要举办各种特殊版本的跳房子比赛,包括在河里从一个岩石跳到另一个岩石。这项激动人心的活动在一条长长的笔直河道中进行,在起点和离起点L远 (1 ≤ L≤ 1,000,000,000) ...
  • Darost
  • Darost
  • 2016年05月29日 21:42
  • 1579

|NOIOJ|动态规划|2988:计算字符串距离

http://noi.openjudge.cn/ch0206/2988/ 折腾了我很久,终于会了。。 设a数组为第一个字符串,b数组为第二个字符串,数组从下标1开始 对于这个问题,我们设f[i][j]...
  • Darost
  • Darost
  • 2016年08月29日 18:04
  • 158

|NOIOJ|贪心|1797:金银岛

描述某天KID利用飞行器飞到了一个金银岛上,上面有许多珍贵的金属,KID虽然更喜欢各种宝石的艺术品,可是也不拒绝这样珍贵的金属。但是他只带着一个口袋,口袋至多只能装重量为w的物品。岛上金属有s个种类,...
  • Darost
  • Darost
  • 2016年06月03日 19:15
  • 1091

[NOIOJ19]装箱问题 贪心算法

题目在这儿这题思路很明了,无非是更多地利用空间,尽可能少地空出空位。 不妨设1*1、2*2、3*3、4*4、5*5、6*6的长方体数量分别为c1、c2、c3、c4、c5、c6c_1、c_2、c_3、...

香橙派PC笔记-05-编译linux内核和UVC摄像头驱动笔记

香橙派PC笔记-05-编译linux内核和UVC摄像头驱动笔记 我的笔记和资料全共享在云盘: http://pan.baidu.com/s/1dD6T0f3 没有密码,欢迎下载~~~...

算法05:二分搜索算法——分治法Part1

分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。...

【COGS】1595 [USACO FEB05]神秘的挤奶机 二分最大流

传送门:【COGS】1595 [USACO FEB05]神秘的挤奶机 题目分析:赤果果的er

树莓派 Learning 002 装机后的必要操作 --- 05 给树莓派搭建“x86 + pi”环境 -- 安装**32位运行库** -- 解决`E:未发现软件包 xxx` 问题

树莓派 装机后的必要操作 — 给树莓派搭建“x86 + pi”环境 – 安装32位运行库 – 解决E:未发现软件包 xxx 问题 我的树莓派型号:Raspberry Pi 2 Model B V...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:|NOIOJ|二分|05:派
举报原因:
原因补充:

(最多只允许输入30个字)