1003-pie
2016-04-21 23:32
288 查看
1.题号: 1003-pie
2.题意:要办生日Party,有n个馅饼,有f个朋友,接下来是n个馅饼的半径。然后是分馅饼了,自己也要,大家都要一样大,形状没什么要求,但都要是一整块的那种,也就是说不能从两个饼中各割一小块来凑一块,饼的厚度是1,所以面积和体积相等。题目要求我们分到的饼尽可能的大!
3.解题思路:关于题目例如:面积为10的和6的两块饼,如果每人分到面积为5,则10分两块,6切成5,够分3个人,如果每人6,则只能分两个了。先求出每个pie'的面积,将最大的取出来maxn,sum是所有pie面积的总和,maxn/人数这是分到的最小的可能性,最大的一块分f+1个人;sum/人数是最大的可能性,所有的蛋糕正好都分完。得到了一个区间,然后二分查找,进行for循环,看剩下pie还能否继续分,如果能分出足够的人数就符合条件误差在1e-8之间,如果不符合就二分查找下去。pi
用反余弦求出,精度更高。
4.感想:这道题是在二分查找条件上又加了一个条件,跟前两道题异曲同工,还有初始化不能忘。
5.AC代码:
2.题意:要办生日Party,有n个馅饼,有f个朋友,接下来是n个馅饼的半径。然后是分馅饼了,自己也要,大家都要一样大,形状没什么要求,但都要是一整块的那种,也就是说不能从两个饼中各割一小块来凑一块,饼的厚度是1,所以面积和体积相等。题目要求我们分到的饼尽可能的大!
3.解题思路:关于题目例如:面积为10的和6的两块饼,如果每人分到面积为5,则10分两块,6切成5,够分3个人,如果每人6,则只能分两个了。先求出每个pie'的面积,将最大的取出来maxn,sum是所有pie面积的总和,maxn/人数这是分到的最小的可能性,最大的一块分f+1个人;sum/人数是最大的可能性,所有的蛋糕正好都分完。得到了一个区间,然后二分查找,进行for循环,看剩下pie还能否继续分,如果能分出足够的人数就符合条件误差在1e-8之间,如果不符合就二分查找下去。pi
用反余弦求出,精度更高。
4.感想:这道题是在二分查找条件上又加了一个条件,跟前两道题异曲同工,还有初始化不能忘。
5.AC代码:
#include<iostream> #include<stdio.h> #include<cmath> #include<algorithm> using namespace std; double pi=acos(-1.0); double pie[10010]; double sum,maxn; int main() { int i,n,f,t,radio,num; double l,r,mid; cin>>t; while(t--) { cin>>n>>f; f++; maxn=sum=0; for(i=0;i<n;i++) { cin>>radio; pie[i]=pi*radio*radio; maxn=max(pie[i],maxn); sum+=pie[i]; } l=maxn/f; r=sum/f; while(l+0.00001<r) { mid=(l+r)/2; num=0; for(i=0;i<n;i++) num+=(int)(pie[i]/mid); if(num<f) r=mid; else l=mid; } printf("%.4lf\n",l); } return 0; }
相关文章推荐
- 搜狗百度360市值齐跌:搜索引擎们陷入集体焦虑?
- 本人即将筹备败家日志,敬请期待!
- IE:使用搜索助手
- C++深度优先搜索的实现方法
- 基于文本的搜索
- php实现搜索一维数组元素并删除二维数组对应元素的方法
- 使用Sphinx对索引进行搜索
- asp 多关键词搜索的简单实现方法
- C#使用foreach语句搜索数组元素的方法
- WordPress中用于获取搜索表单的PHP函数使用解析
- JavaScript中数组的排序、乱序和搜索实现代码
- jquery ztree实现树的搜索功能
- C#编程实现Excel文档中搜索文本内容的方法及思路
- sqlserver中在指定数据库的所有表的所有列中搜索给定的值
- 可以用来搜索当前页面内容的js代码
- 全文搜索和替换
- javascript搜索自动提示功能的实现第1/3页
- iOS应用中UISearchDisplayController搜索效果的用法
- mysql 模糊搜索的方法介绍
- C#搜索文字在文件及文件夹中出现位置的方法