1003
2016-04-14 12:38
295 查看
简单题意:n块饼,F+1个人分,每个人分一块,必须是整块不能够拼凑,求最大的每个人分的饼的面积
解题思路:先找出最大的饼的面积,然后进行二分法,看每块饼是否能够进行二分,如果可以,则说明,大于或者等于平均值,否则不可以,计算个数,看是否大于人数,最终求出最大的平均值
感想:在做这题的时候π的取值我定义为3.14159265359可是最终的结果总是错的,最终用了反三角函数表示π,最后才AC 的
AC代码:
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#define PI acos(-1.0)
using namespace std;
double pie[1100000];
int N,F;
int main()
{
int T;
cin>>T;
while(T--)
{
cin>>N>>F;
double maxx=0;
for(int i=0;i<N;i++)
{
cin>>pie[i];
pie[i]*=pie[i];
maxx=max(maxx,pie[i]);
}
F=F+1;
double low=0,high=maxx;
double mid;
while(high-low>0.0000001)
{
mid=(high+low)/2;
int sum=0;
for(int i=0;i<N;i++)
{
if((pie[i]-mid)>0.0000001)
{
sum+=(int)(pie[i]/mid);
}
}
if(sum>=F)
{
low=mid;
}
else
{
high=mid;
}
}
printf("%.4lf\n",PI*mid);
}
return 0;
}
解题思路:先找出最大的饼的面积,然后进行二分法,看每块饼是否能够进行二分,如果可以,则说明,大于或者等于平均值,否则不可以,计算个数,看是否大于人数,最终求出最大的平均值
感想:在做这题的时候π的取值我定义为3.14159265359可是最终的结果总是错的,最终用了反三角函数表示π,最后才AC 的
AC代码:
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#define PI acos(-1.0)
using namespace std;
double pie[1100000];
int N,F;
int main()
{
int T;
cin>>T;
while(T--)
{
cin>>N>>F;
double maxx=0;
for(int i=0;i<N;i++)
{
cin>>pie[i];
pie[i]*=pie[i];
maxx=max(maxx,pie[i]);
}
F=F+1;
double low=0,high=maxx;
double mid;
while(high-low>0.0000001)
{
mid=(high+low)/2;
int sum=0;
for(int i=0;i<N;i++)
{
if((pie[i]-mid)>0.0000001)
{
sum+=(int)(pie[i]/mid);
}
}
if(sum>=F)
{
low=mid;
}
else
{
high=mid;
}
}
printf("%.4lf\n",PI*mid);
}
return 0;
}
相关文章推荐
- WTL 通过IWebBrowser2接口使WebBrowser控件在自己的窗口打开网页 .
- bootstrap中200个来自 Glyphicon Halflings 的字体图标
- 用按键精灵自动消除行号失败记
- 配置Java远程监控授权(Java Mission Control)
- sphinx/coreseek测试报install missing XML libraries错
- Android使用xml自定义软键盘效果(附源码)
- 统计字符串的长度
- #define和typedef的区别
- nyoj 739笨蛋难题四
- 使用JAVA转换符实现Android日期时间
- 并发编程初探-对象的共享
- 【转】WebAPI使用多个xml文件生成帮助文档
- 第一篇:Power BI数据可视化概述
- 解决前端文件修改后浏览器页面未更新的问题
- 位运算符
- 期望 zoj3929 Deque and Balls
- 每天一记、美文积累、感慨杂谈
- OS X平台上MySQL环境搭建
- Machine Learning第十周笔记:大规模机器学习
- Java 实现 SSL认证