HDU1969 Pie(二分搜索)
题目大意是要办生日Party,有n个馅饼,有f个朋友。接下来是n个馅饼的半径。然后是分馅饼了,
注意咯自己也要,大家都要一样大,形状没什么要求,但都要是一整块的那种,也就是说不能从两个饼中
各割一小块来凑一块,像面积为10的和6的两块饼(饼的厚度是1,所以面积和体积相等),
假设每人分到面积为5,则10分两块,6切成5。够分3个人,假设每人6。则仅仅能分两个了!
题目要求我们分到的饼尽可能的大! 仅仅要注意精度问题就能够了,一般WA 都是精度问题
运用2分搜索:
首先用总饼的体积除以总人数,得到每一个人最大能够得到的V,可是每一个人手中不能有两片或多片拼成的一块饼。
最多仅仅能有一片切割过得饼。 用2分搜索时。把0设为left。把V 设为right。mid=(left+right)/2;
搜索条件是:以mid为标志,假设每块饼都能够切割出一个mid。那么返回true,说明每一个人能够得到的饼的体积能够
大于等于mid;假设不能分出这么多的mid,那么返回false,说明每一个人能够得到饼的体积小于等于mid。
(1)精度为:0.000001
(2) pi 用反余弦求出,精度更高。
#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
double pi = acos(-1.0);
int F,N;
double V[10001];
bool test(double x){
int num=0;
for(int i=0;i<N;i++){
num+=int(V[i]/x);
}
if(num>=F) return true;
else return false;
}
int main()
{
int t,r;
double v,max,left,right,mid;
scanf("%d",&t);
while(t--){
scanf("%d%d",&N,&F);
F = F + 1;
for(int i=0;i<N;i++){
scanf("%d",&r);
V[i]=pi*r*r;
v+=V[i];
}
max = v/F;
left = 0.0;
right = max;
while((right - left) > 1e-6){
mid = (left + right) / 2;
if(test(mid)) left = mid;
else right = mid;
}
printf("%.4lf\n",mid);
}
return 0;
}
HDU1969 Pie(二分搜索)的更多相关文章
- HDU 1969 Pie(二分搜索)
题目链接 Problem Description My birthday is coming up and traditionally I'm serving pie. Not just one pi ...
- HDU1969:Pie(二分)
Pie Time Limit : 5000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submissio ...
- Hdu1969 Pie 2017-01-17 13:12 33人阅读 评论(0) 收藏
Pie Time Limit : 5000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submissio ...
- HDU2199,HDU2899,HDU1969,HDU2141--(简单二分)
二分是一种很有效的减少时间开销的策略, 我觉得单列出二分专题有些不太合理, 二分应该作为一中优化方法来考虑 这几道题都是简单的使用了二分方法优化, 二分虽然看似很简单, 但一不注意就会犯错. 在写二分 ...
- Pie POJ 3122 二分搜索
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 17324 Accepted: 5835 Special Judge ...
- POJ 3122 Pie( 二分搜索 )
链接:传送门 题意:一个小朋友开生日派对邀请了 F 个朋友,排队上有 N 个 底面半径为 ri ,高度为 1 的派,这 F 个朋友非常不友好,非得"平分"这些派,每个人都不想拿到若 ...
- [No0000A2]“原始印欧语”(PIE)听起来是什么样子?
"Faux Amis"节目中经常提到"原始印欧语"(PIE)——"Proto-Indo-European". 我们说过,英语,法语中的&qu ...
- [LeetCode] Largest BST Subtree 最大的二分搜索子树
Given a binary tree, find the largest subtree which is a Binary Search Tree (BST), where largest mea ...
- *HDU1969 二分
Pie Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
随机推荐
- Linux系统中命令提示符解释-Linux中命令格式、分类-bash中的快捷键
1.命令提示符 [root@mysqlserver01 opt]# [root@mysqlserver01 ~]# root 当前用户名 @ 固定的(格式) mysqlserver01 主机名 opt ...
- OpenJDK源码研究笔记(十一):浅析Javac编译过程中的抽象语法树(IfElse,While,Switch等语句的抽象和封装)
浅析OpenJDK源码编译器Javac的语法树包com.sun.source.tree. 抽象语法树,是编译原理中的经典问题,有点难,本文只是随便写写. 0.赋值语句 public interface ...
- centos下安装redis/mysql等基础环境
1.修改语言 阿里云的ECS默认语言是:en_US.UTF-8,需要改成zh_CN.UTF-8 修改方法:vim /etc/locale.conf,然后重启. 查看方法:echo $LANG 2.安装 ...
- vim 计算器寄存器使用
我们可能会在vim的使用中,碰到下面的情况 当我正在写一周预算的时候,我想计算下每天我买菜花2.7,每天买两顿,周死晚上出去吃,周六额外买1.5斤14.8一斤的猪肉... 这时候你打算怎么办呢,是不是 ...
- Android 学习笔记进阶14之像素操作
在我们玩的游戏中我们会经常见到一些图像的特效,比如半透明等效果.要实现这种半透明效果其实并不难,需要我们懂得图像像素的操作. 不要怕,其实在Android中Bitmap为我们提供了操作像素的基本方法. ...
- ShareSDk的使用
效果: 具体操作参考Mob官网shareSdk的文档 调用方法 public class MainActivity extends Activity { @Override protected voi ...
- 31.Intellij idea 的maven项目如何通过maven自动下载jar包
转自:https://blog.csdn.net/u012851114/article/details/81872981 maven项目自动加载jar包 所需工具如下: Intellij IDEA 1 ...
- Vue的响应原理
渲染render function之后就是 核心的响应式过程了 Object.defineProperty vue的核心之一就是Object.defineProperty 方法(IE9及其以上) Ob ...
- Whitening
The goal of whitening is to make the input less redundant; more formally, our desiderata are that ou ...
- Kinect 开发 —— 图片浏览
总体思路 首先运用WPF编写一个简单的支持多点触控的图片浏览程序,这方面您可以参看MSDN上的这篇文章,上面有代码,可能需要FQ才能下载.中文的话,您可以参考Gnie同学关于在WPF上面多点触屏(Mu ...