J. Pie 典型的二分求解
来源:互联网 发布:淘宝几天自动确认收货? 编辑:程序博客网 时间:2024/06/07 06:25
J. Pie
我的生日来临,通常会用馅饼招待客人。是N个大小不同,口味不同的馅饼。我有F个朋友,他们会来参加我的生日宴会,他们每个人都会从某一块饼中分到一部分,而不是从某几块饼中各自分一部分(这么做会显得很乱的!)。我们每个人得到的都是同样大小的饼(形状可以不同),所有的馅饼都是圆柱形的,它们有同样的高度,但是半径可以是不一样的。我们所能得到的最大的馅饼尺寸是多少?
Input
一行包括一正整数:测试组数。接下来是每组数据说明:
l 一行有2个整数N和F(1≤N,F≤10 000),分别是馅饼和朋友的数量。
l 一行有N个整数ri(1≤ri≤10 000),分别表示N个馅饼的半径。
Output
对每组测试,输出一行,表示我和我的朋友所能达到的最大的馅饼尺寸(保留小数6位)。
Sample input
Sample output
3
3 3
4 3 3
1 24
5
10 5
1 4 2 3 4 5 6 5 4 2
25.132741
3.141593
50.265482
#include<stdio.h>#include<math.h>const double pi=acos(-1); //对于pi这个来讲以后切记用这个来赋值double a[11000];int main(){ int x,ji; scanf("%d",&x); while(x--) { int i,n,f; scanf("%d %d",&n,&f); f+=1; double sum=0,max,min,middle; for(i=1;i<=n;i++) { scanf("%lf",&a[i]); a[i]=a[i]*a[i]; sum+=a[i]; } max=sum/f; //确定最大值 min=0; while(max-min>0.00000001) 当两者的差距做够小时 middle ,max,min的值就都一样了 { ji=0; middle=(max+min)/2; for(i=1; i<=n; i++) { ji+=(int)(a[i]/middle); } if(ji>=f)min=middle; //这是典型的二分的条件 if(ji<f)max=middle; } printf("%.6lf\n",pi*middle); } }
- J. Pie 典型的二分求解
- UVA - 12097 (pie 二分求解逼近值)
- Pie(二分)
- 【二分】Pie
- Pie (二分)
- Pie 【二分】
- Pie 二分
- Pie[二分]
- HOJ 2615 Pie ---------------二分查找的运用
- poj3122--Pie(二分的精度问题)
- hdu pie(二分+贪心)
- POJ 3122 Pie 二分
- POJ 3122 Pie 二分
- hdu1969 Pie 二分
- POJ3122--Pie--二分
- hdu1969(pie二分)
- [hoj]Pie【二分】
- HDU1969---Pie 二分
- 解题报告-HDOJ-1233(最小生成树——kruskal)
- Ubuntu 配置 opencv , CodeBlocks 开发环境
- Java语言编码规范(Java Code Conventions)
- 【php】文件的上传与下载
- find the most comfortable road(并查集)
- J. Pie 典型的二分求解
- Apache出现 You don't have permission to access /phpmyadmin/ on this server. 解决办法
- HTML表格细线代码
- Scintilla控件在Win32环境下的使用(一)
- You don't have permission to access /blog/wp-admin/options.php
- 第三章 -- 分层遍历二叉树
- 钛备份 - Titanium Backup ★ root 6.1.5.2 专业版 ( 免 key/license )
- C语言除法运算符“/”和求余运算符“%”
- 机房收费系统之上机、下机