hdu3756 三分求最小圆锥
题意:
让你找到一个最小的圆柱去覆盖所有的竖直的线段..
思路:
三分,直接去三分他的半径,因为想下,如果某个半径是最优值,那么
从R(MAX->now->MIN)是的 V肯定是先增大然后减小再增大,也就是满足凹凸性,所以可以三分,三分的时候根据当前的半径我们可以枚举每一个点,通过相似三角形去找到最大的H作为当前的H,然后根据V三分搜索就行了,对于low的初始值我赋的是 x_y平面上离原点距离最远的那个的距离+ 1e-9 ,防止被除数是0的情况.其他的没啥就是简单的三分,如果你想卡排名就不断缩小eps知道wa为止.
#include<stdio.h>
#include<math.h> #define eps 1e-9
#define N 10000 + 100
double PI = acos(-1.0); typedef struct
{
double x ,y ,z;
}NODE; NODE node[N]; double Q_H(double R ,int n)
{
double MAX = 0;
for(int i = 1 ;i <= n ;i ++)
{
double tmp = sqrt(node[i].x * node[i].x + node[i].y * node[i].y);
double now = R / (R - tmp) * node[i].z;
if(MAX < now) MAX = now;
}
return MAX;
} double Q_V(double R ,double H ,int n)
{
return PI * R * R / 3 * H;
} void solve(int n ,double loww)
{
double low ,up ,mid ,mmid;
low = loww ,up = 1000000000;
double v1 ,v2 ,h1 ,h2;
while(1)
{
mid = (low + up) / 2;
mmid = (mid + up) / 2;
h1 = Q_H(mid ,n);
h2 = Q_H(mmid ,n);
v1 = Q_V(mid ,h1 ,n);
v2 = Q_V(mmid ,h2 ,n);
if(v1 > v2) low = mid;
else up = mmid;
if(up - low < eps) break;
}
printf("%.4lf %.4lf\n" ,h1 ,mid);
return ;
} int main ()
{
int t ,n ,i;
scanf("%d" ,&t);
while(t--)
{
scanf("%d" ,&n);
double ma = 0;
for(i = 1 ;i <= n ;i ++)
{
scanf("%lf %lf %lf" ,&node[i].x ,&node[i].y ,&node[i].z);
double now = sqrt(node[i].x * node[i].x + node[i].y * node[i].y);
if(ma < now) ma = now;
}
solve(n ,ma + eps);
}
return 0;
}
hdu3756 三分求最小圆锥的更多相关文章
- HDU 4355——Party All the Time——————【三分求最小和】
Party All the Time Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- hihocoder 1142 三分求极值【三分算法 模板应用】
#1142 : 三分·三分求极值 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 这一次我们就简单一点了,题目在此: 在直角坐标系中有一条抛物线y=ax^2+bx+c和一 ...
- SQL Server 2008 R2——查找最小nIndex,nIndex存在而nIndex+1不存在 求最小连续数组中的最大值
=================================版权声明================================= 版权声明:原创文章 谢绝转载 请通过右侧公告中的“联系邮 ...
- hiho 第116周,最大流最小割定理,求最小割集S,T
小Hi:在上一周的Hiho一下中我们初步讲解了网络流的概念以及常规解法,小Ho你还记得内容么? 小Ho:我记得!网络流就是给定了一张图G=(V,E),以及源点s和汇点t.每一条边e(u,v)具有容量c ...
- poj 3469 Dual Core CPU【求最小割容量】
Dual Core CPU Time Limit: 15000MS Memory Limit: 131072K Total Submissions: 21453 Accepted: 9297 ...
- BZOJ_1001_狼抓兔子_(平面图求最小割+对偶图求最短路)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1001 1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec ...
- The Minimum Length - HUST 1010(求最小循环节)
题意:有个一字符串A(本身不是循环串),然后经过很多次自增变成AAAAA,然后呢从自增串里面切出来一部分串B,用这个串B求出来A的长度. 分析:其实就是求最小循环节.......串的长度 - 最大 ...
- [KMP求最小循环节][HDU1358][Period]
题意 求所有循环次数大于1的前缀 的最大循环次数和前缀位置 解法 直接用KMP求最小循环节 当满足i%(i-next[i])&&next[i]!=0 前缀循环次数大于1 最小循环节是i ...
- 一个好的函数(gcd)求最小公约数
这个函数是我无意中看到的很不错,很给力,我喜欢 是用于求最小公约数的 简单的描述就是,记gcd(a,b)表示非负整数a,b的最大公因数,那么:gcd(a,b)=gcd(b,a%b)或者gcd(a,0) ...
随机推荐
- Java 集合框架 03
集合框架·HashSet 和 TreeSet HashSet存储字符串并遍历 * A:Set集合概述及特点 * 通过API查看即可 * 无索引,不可以重复,无序 * B:案例演示 * HashSet存 ...
- 精确率precession和召回率recall
假设有两类样本,A类和B类,我们要衡量分类器分类A的能力. 现在将所有样本输入分类器,分类器从中返回了一堆它认为属于A类的样本. 召回率:分类器认为属于A类的样本里,真正是A类的样本数,占样本集中所有 ...
- 关于个Base64,MD5,16进制的转换
1,待签名数据以UTF-8的格式转字节流,对字节流进行MD5算法得到的签名字节流,再转换为16进制字符串,即生成了数字签名. byte[] targetData = md5.ComputeHash(S ...
- 数据库索引知识到MySQL InnoDB
前言 本文聊聊数据库中的索引,涉及索引基础数据结构,分类.以及使用索引的缺点. 索引就像一本书的目录,商场里面各个楼层指示图,让我们不需要自己无目的的找,而是能够很快的找到自己想要的. 1. 索引的基 ...
- 内置了一个缓冲区(数组)缓冲流BufferInputStream为何要配合字节数组的使用?
内置了一个缓冲区(数组)缓冲流BufferInputStream为何要配合字节数组的使用? 只为效率而积累[积少成多送一趟比送多趟快] 举例子:超市买30个鸡蛋回家煮 (1)读一个送一个(效率太低啦) ...
- F - Fluctuation Limit HDU - 6860
题目链接:https://vjudge.net/problem/HDU-6860 题意:相邻两天的差值的绝对值不超过K. 思路:该题的关键在于前面的点会影响后面的点,后面的点会影响前面的点,我们要找到 ...
- git操作初启篇(一)
关于git是什么我想我也不用多说什么,其实关于git的操作在他们的官网上有详细的说明,一项新的技术官网上的一定是最权威的,所以学习一门技术我个人更倾向于看官网,下面的是git的官网https://gi ...
- Kubernetes声明式API与编程范式
声明式API vs 命令时API 计算机系统是分层的,也就是下层做一些支持的工作,暴露接口给上层用.注意:语言的本质是一种接口. 计算机的最下层是CPU指令,其本质就是用"变量定义+顺序执行 ...
- 【10.5NOIP普及模拟】sort
[10.5NOIP普及模拟]sort 文章目录 [10.5NOIP普及模拟]sort 题目描述 输入 输出 输入输出样例 样例输入 样例输出 数据范围限制 解析 code 题目描述 小x和小y是好朋友 ...
- java面试-Java内存模型(JMM)
p.p1 { margin: 0; font: 15px Helvetica } 一.并发编程两个关键问题 线程之间如何通信.同步.java并发采用的是共享内存模型 二.JMM内存模型的抽象结构 描述 ...