题面:【POJ3122】Pie

按理来说,这题应该是一道很水的二分题,可是精度问题却折磨了我很久很久,经过无数次的修改,我总算A了这一题。

你可以二分最终每个人所能得到的Pie的大小,而验证函数check()其实也非常简单:

bool check(double x)//验证函数
{int t=0;//记录当Pie的大小为x时所能得到的Pie的数量for(int i=1;i<=n;i++) t+=floor(s[i]/x);//统计Pie的数量,s[]数组表示每个Pie的大小return t>=m;//若所能得到的Pie的数量比人数多(初始化时记得将m加1,因为自己也需要一份,这是一个坑),就返回true,否则为false
}

有了check()函数,就可以轻易地打出二分函数了:

void find(double l,double r)//二分函数
{if(abs(l-r)<ff) return;//当l与r之间的差距比ff(1e-6)还小,就退出函数double mid=(l+r)/2;//计算l与r的中间值if(check(mid)) ans=mid,find(mid+ff,r);//若Pie的大小为mid可以实现,就将mid作为答案,并尝试得到更大的答案else find(l,mid-ff);//若Pie的大小为mid无法实现,就向更小的区域去寻找答案
}

这样一来,整个程序就出来了:

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cmath>
#define max(x,y) (x>y?x:y)
#define min(x,y) (x<y?x:y)
#define ff 0.000001//一个特别小的数(1e-6)
#define N 10000
using namespace std;
const double pi=4*atan(1.0);//将π的值作为一个常数
int n,m,a[N+5];//n存储Pie的数量,m存储人数,a[]存储每个Pie的半径
double ans,s[N+5];//ans存储答案,s[]存储每个Pie的面积
int read()//读优
{int x=0,f=1;char ch=getchar();while((ch<'0'||ch>'9')&&ch!='-') ch=getchar();if(ch=='-') f=-1,ch=getchar();while(ch>='0'&&ch<='9') (x*=10)+=ch-'0',ch=getchar();return x*=f;
}
void write(int x)//输优
{if(x<0) putchar('-'),x=-x;if(x>9) write(x/10);putchar(x%10+'0');
}
bool check(double x)//验证函数(详解见上)
{int t=0;for(int i=1;i<=n;i++) t+=floor(s[i]/x);return t>=m;
}
void find(double l,double r)//二分函数(详解见上)
{if(abs(l-r)<ff) return;double mid=(l+r)/2;if(check(mid)) ans=mid,find(mid+ff,r);else find(l,mid-ff);
}
int main()
{int T=read();//一共有T组数据while(T--){n=read(),(m=read())++;//将m加1,因为自己也需要一份,这是一个坑double Max=0;//存储上界for(int i=1;i<=n;i++) a[i]=read(),s[i]=a[i]*a[i]*pi,Max=max(Max,s[i]);//读入Pie的半径,计算出Pie的面积,并更新上界ans=0;//答案初始化为0find(ff,Max);//进行二分答案printf("%.4f\n",ans);//输出(题目要求保留4位小数)}return 0;
}

版权声明:转载请注明地址

【POJ3122】Pie(二分)相关推荐

  1. poj3122(二分算法)

    题意:现在有N个圆柱的pie并且高度都为1,分给F个朋友和我自己,即分给F+1个人,每个人可以分到的最大pie.注意题目中的一句话"这应该是一块馅饼,而不是几个小块,因为那看起来很乱.不过, ...

  2. POJ 3122 Pie 二分枚举

    题目:http://poj.org/problem?id=3122 这个题就好多了,没有恶心的精度问题,所以1A了.. 1 #include <stdio.h> 2 #include &l ...

  3. 题解 Pie(POJ3122)超详细易懂的二分入门

    题解 POJ3122 Pie 二分入门 注释在手,AC不愁 先上题目: My birthday is coming up and traditionally I'm serving pie. Not ...

  4. Soj题目分类 python代码)

    正值期末复习,刷点soj放松下 但想看看能不能在找点关于数据结构的题目来做一下. 在网上看到有不少人上传过那些关于部分SOJ题目的描述,但是说实话有些乱 不过我看到有个网页中包含的一个类似文档的东西, ...

  5. POJ前面的题目算法思路【转】

    1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...

  6. 初学者acm的练习题指南

    上机练习题参考题 忘了在哪找的啦~~希望对大家有帮助呦 <!--[if !supportLists]-->1.    <!--[endif]-->Programming Bas ...

  7. sicily题目分类

    sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...

  8. [sicily]部分题目分类

    sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...

  9. Sicily 题目分类

    依照自己水平挑着做→ →~~ 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 ...

  10. 编程题目分类(剪辑)

    1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. 模拟 12. 算术与代 ...

最新文章

  1. IDEA Maven项目引入本地外部jar包
  2. j-link接口定义及实际使用
  3. 微信小程序 UI 判断 循环
  4. c语言随机迷宫生成器,作为新手该如何快速上手 C++
  5. java shp文件_Java读取工作空间下所有shp文件名
  6. 经典机器学习系列(六)【集成学习】之周志华西瓜书-AdaBoost算法证明解析
  7. TLB cache 原理
  8. 联想裁员与全球化背景下的知识阶层失业
  9. ffmpeg mov 转 mp4
  10. EOS区块链开发的第一步
  11. 哈密瓜水果的文案,水果哈密瓜文案高级感
  12. 解耦matlab仿真,感应电机解耦控制及MATLAB仿真研究
  13. 你需要了解的55个网络概念
  14. 2022-2027年中国IT高教行业市场调研及未来发展趋势预测报告
  15. 在VM中安装vmware-tools ,使用tar命令解压文件时显示无法mkdir:只读文件系统
  16. 【UE4_蓝图】用鼠标平滑稳定的在世界(三维空间)中移动物体
  17. mui扩展图标-购物车图标无法正常显示问题
  18. 三代基因组全基因组的变异检测
  19. 案例描述:比赛分数管理系统,需要统计历届冠军所得比赛得分,并记录到文件中,其中系统有如下需求:- 打开系统有欢迎界面,并显示可选择的选项- 选项1:记录比赛得分- 选项2:查看往届
  20. 计算机音乐文爱,文爱_CG贺敬轩_单曲在线试听_酷我音乐

热门文章

  1. matlab画xyz的等高线图,matlab如何画等高线图
  2. 数据结构-剑指offer-整数中1出现的次数
  3. 企业级程序苏林加密系统 php加密的程序源码 sg11加密 xend加密 goto加密 Leave加密 enphp加密 NoName加密
  4. Webpack2/3配置ExtractTextPlugin和Autoprefixer
  5. 寄存器分类及基本作用
  6. 从事Java程序员五年的艰辛之路。月薪从3k到18k,我整整花了五年
  7. 芯片测试的术语解释(FT、CP),持续更新....
  8. 云南大学计算机专业双一流排名,双一流211大学 云南大学2020年各省各批次专业录取分数线...
  9. 国内BI工具/报表工具厂商简介
  10. 从Robotaxi到智慧公交,长沙给智慧交通打了一个样