这道题是一道二分搜索的题,首先计算出最大的平均体积:mx=V总/f;然后去left=0,right=mx,mid=(left+right)/2进行二分搜索,当所有pi分割出的mid的个数是大于等于f时,说明这个mid是满足条件的,一直搜索知道找到最大的mid;这题的核心还是精度的问题。不得不说这题对精度的要求实在是太高了。首先是mi的精度,当我用的是mi=1e-8时,会超时,慢慢将mi降到1e-6。后来又发现当将pi定义为3.1415926535是个会wa掉,后来参考了一下别人的代码才知道原来double pi = acos(-1.0) 这样定义pi精度会更高。。。也是醉了。

#include"iostream"
#include"stdio.h"
#include"algorithm"
#include"string.h"
#include"cmath"
#define mi 1e-6
//#define pi 3.1415926535
using namespace std;
double pi = acos(-1.0);
double v[];
int f,n;
bool test(double x)
{
int i,num=;
for(i=;i<n;i++)
{
num+=(int) (v[i]/x);
}
if(num>=f) return true;
else return false;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int i,j;
cin>>n>>f;
f++;
double r,left,right,mid,mx,V=;
for(i=;i<n;i++) {cin>>r;v[i]=pi*r*r;V+=v[i];}
mx=V/f;
left=;right=mx;
while(right-left>mi)
{
mid=(right+left)/2.0;
if(test(mid)) left=mid;
else right=mid;
}
printf("%.4lf\n",mid);
}
return ;
}

hdu Pie的更多相关文章

  1. hdu 1969 Pie(二分查找)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1969 Pie Time Limit: 5000/1000 MS (Java/Others)    Me ...

  2. HDU 1969 Pie(二分法)

    My birthday is coming up and traditionally I’m serving pie. Not just one pie, no, I have a number N ...

  3. HDU 3392 Pie(DP)

    题意:有一些男生女生,男生女生数量差不超过100 ,男生女生两两配对.要求求出一种配对方法,使每一对的高度差的和最小. 思路:(我是真的笨笨笨!!)设人少的一组人数为n,b[],人多的一组人数为m,g ...

  4. Pie(hdu 1969 二分查找)

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

  5. HDU 1969 Pie(二分查找)

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

  6. HDU 1969 Pie(二分搜索)

    题目链接 Problem Description My birthday is coming up and traditionally I'm serving pie. Not just one pi ...

  7. hdu 1966 Pie

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

  8. HDU 1969 Pie(二分,注意精度)

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

  9. hdu 1969 Pie (二分法)

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

随机推荐

  1. python提取百万数据到csv文件

    转自:http://www.2cto.com/kf/201311/258112.html 今天有需求,需要把系统所有用户注册的id和邮箱等信息导出来提供给他们,在mysql里面count了下,大概有3 ...

  2. Java入门学习知识点汇总

    Java入门重要知识点在这里总结一下,以方便日后复习,这部分内容主要有:变量和常量,常用的运算符,流程控制语句,数组,方法这些内容 一.变量和常量 1.Java关键字 先贴张图: 所有关键字区分大小写 ...

  3. .tar.bz2文件解压命令

    从网络上下载到的源码包, 最常见的是 .tar.gz 包, 还有一部分是 .tar.bz2包 要解压很简单 : .tar.gz     格式解压为          tar   -zxvf   xx. ...

  4. ecshop绕过验证码暴力破解

    若验证码不匹配,并没有销毁当前验证码   所以就可以一次请求验证码图片后,只要不再刷新验证码就可以一直使用  1.获取正确的验证码   2. 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

  5. 手机 无法转移到SD卡 Andriod 导出应用程序

    今天下载了一个应用Meridian,因为是直接从google商店里面装的,因此无法找到SDK,需要从新找到导出方式: 豌豆荚==> 软件和游戏管理==>输入Meridian搜素==> ...

  6. vector data() [c++11]

    Example 12345678910111213141516171819202122 // vector::data #include <iostream> #include <v ...

  7. 二、JavaScript语言--JS基础--JavaScript入门篇

    1.如何插入JS 使用<script>标签在HTML网页中插入JavaScript代码.注意, <script>标签要成对出现,并把JavaScript代码写在<scri ...

  8. 企业级项目中最常用到的SQL

    用SQL语句添加删除修改字段 1.增加字段     alter table docdsp    add dspcode char(200) 例如: 表gwamis.d410Sctzmx添加字段f410 ...

  9. mac上安装gradle

    首先,先download最新版本的gradle,网址如下:http://www.gradle.org/get-started然后将下载下来的zip包放在你要安装的路径上,我安装在/usr/local/ ...

  10. 在php4下可用,简单的php数组转成json格式,

    function array_to_json( $array ){     if( !is_array( $array ) ){         return false;     }       $ ...