题意:

      让你找到一个最小的圆柱去覆盖所有的竖直的线段..

思路:

      三分,直接去三分他的半径,因为想下,如果某个半径是最优值,那么

从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 三分求最小圆锥的更多相关文章

  1. HDU 4355——Party All the Time——————【三分求最小和】

    Party All the Time Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  2. hihocoder 1142 三分求极值【三分算法 模板应用】

    #1142 : 三分·三分求极值 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 这一次我们就简单一点了,题目在此: 在直角坐标系中有一条抛物线y=ax^2+bx+c和一 ...

  3. SQL Server 2008 R2——查找最小nIndex,nIndex存在而nIndex+1不存在 求最小连续数组中的最大值

    =================================版权声明================================= 版权声明:原创文章 谢绝转载  请通过右侧公告中的“联系邮 ...

  4. hiho 第116周,最大流最小割定理,求最小割集S,T

    小Hi:在上一周的Hiho一下中我们初步讲解了网络流的概念以及常规解法,小Ho你还记得内容么? 小Ho:我记得!网络流就是给定了一张图G=(V,E),以及源点s和汇点t.每一条边e(u,v)具有容量c ...

  5. poj 3469 Dual Core CPU【求最小割容量】

    Dual Core CPU Time Limit: 15000MS   Memory Limit: 131072K Total Submissions: 21453   Accepted: 9297 ...

  6. BZOJ_1001_狼抓兔子_(平面图求最小割+对偶图求最短路)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1001 1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec   ...

  7. The Minimum Length - HUST 1010(求最小循环节)

    题意:有个一字符串A(本身不是循环串),然后经过很多次自增变成AAAAA,然后呢从自增串里面切出来一部分串B,用这个串B求出来A的长度.   分析:其实就是求最小循环节.......串的长度 - 最大 ...

  8. [KMP求最小循环节][HDU1358][Period]

    题意 求所有循环次数大于1的前缀 的最大循环次数和前缀位置 解法 直接用KMP求最小循环节 当满足i%(i-next[i])&&next[i]!=0 前缀循环次数大于1 最小循环节是i ...

  9. 一个好的函数(gcd)求最小公约数

    这个函数是我无意中看到的很不错,很给力,我喜欢 是用于求最小公约数的 简单的描述就是,记gcd(a,b)表示非负整数a,b的最大公因数,那么:gcd(a,b)=gcd(b,a%b)或者gcd(a,0) ...

随机推荐

  1. 快速电路仿真器(FastSPICE)中的高性能矩阵向量运算实现

    今年10-11月份参加了EDA2020(第二届)集成电路EDA设计精英挑战赛,通过了初赛,并参加了总决赛,最后拿了一个三等奖,虽然成绩不是很好,但是想把自己做的分享一下,我所做的题目是概伦电子出的F题 ...

  2. MySQL日志收集之Filebeat和Logstsh的一键安装配置(ELK架构)

    关于ELK是什么.做什么用,我们不在此讨论.本文重点在如何实现快速方便地安装logstash和filebeat组件,特别是在近千台DB Server的环境下(为了安全保守,公司DB Server 目前 ...

  3. MVC模式从Controller返回内容协商格式(Json或者Xml)

    WebAPI默认的返回格式Json,但是MVC是View,如果在MVC的控制器中,想要返回Json格式该怎么操作呢 在MVC的控制器中返回json数据只需要然会JsonResult而不是ActionR ...

  4. python获取到本机的公网IP

    5行代码获取到本机的公网IP from urllib.request import urlopen import re text = str(urlopen("http://txt.go.s ...

  5. 爬虫必知必会(3)_requests模块高级

    一.爬虫爬取失败的几个原因 1.在短时间内向网站发起了一个高频的请求 解决办法:使用代理 2.连接池(http)中的资源被耗尽 解决办法:立即将请求断开:Connection:close 3.高清图片 ...

  6. 最简单的JVM内存结构图

    JVM内存结构图 大家好,好几天没有更新了,今天的内容有点多,我们详细介绍下JVM内部结构图,还是和之前一样,案例先行,方便大家理解记忆. /** * @author :jiaolian * @dat ...

  7. Linux给防火墙开外网端口

    /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT 80:外网端口

  8. dk.exe自动填报程序的反编译

    dk.exe自动填报程序的反编译 dk.exe用于学校每日健康报的自动填写.

  9. IPFS挖矿赚钱吗?IPFS挖矿是真的吗?

    IPFS一出现就获得了极高的关注度,「让人类信息永存」的口号也让其蒙上了一层神秘的面纱.今天我就来给大家自剖析,一探IPFS技术的真相. IPFS是一个去中心化存储网络,而Filecoin是IPFS激 ...

  10. PTA 数组元素的区间删除

    6-6 数组元素的区间删除 (20 分)   给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素.删除后表中剩余元素保持顺序存储,并且相对位置不能改变. 函数接口定义: ...