HDU 3756 Dome of Circus
不会做,参见别人的程序:
/*
底面为xy平面和轴为z轴的圆锥,给定一些点,使得圆锥覆盖所有点并且体积最小
点都可以投射到xz平面,问题转换为确定一条直线(交x,z与正半轴)使得与x的截距r
和与z轴的截距h满足h*r*r最小。
三分,对于确定的h可以找到最佳的r,并且h*r*r的曲线必定只有一个极小值
*/
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
struct po
{
double x,y;
}p[];
const double eps=1e-;
double Y;
int n;
double makeR(double h)
{
double R=;
for(int i=;i<n;i++)
{
if(R*(h-p[i].y)<h*p[i].x)
R=h*p[i].x/(h-p[i].y);
}
return R;
}
void solve()
{
double L=Y,R=<<,tmp;
while(R-L>eps)
{
tmp=(R-L)/3.0;
double mid1=L+tmp;
double mid2=L+2.0*tmp;
double R1=makeR(mid1);
double R2=makeR(mid2);
if(R1*R1*mid1>R2*R2*mid2)
{
L=mid1;
}
else
{
R=mid2;
}
}
printf("%.3lf %.3lf\n",L+eps,makeR(L)+eps);
}
int main()
{
int i,j,k;
int ca;
scanf("%d",&ca);
while(ca--)
{
scanf("%d",&n);
double tx,ty,Left=;
Y=;
for(i=;i<n;i++)
{
scanf("%lf%lf%lf",&tx,&ty,&p[i].y);
p[i].x=sqrt(tx*tx+ty*ty);
Y=max(p[i].y,Y);
}
solve();
}
return ;
}
HDU 3756 Dome of Circus的更多相关文章
- 【凸包】【三分】Gym - 101309D - Dome of Circus
容易发现,圆锥体积和点的具体x.y坐标无关,只与其到z轴的距离sqrt(x*x+y*y)有关. 于是将这些三维的点都投射到二维的xOy平面的第二象限(sqrt(x*x+y*y),z),求个上凸壳,然后 ...
- UVa 1473 - Dome of Circus 三分
把所有的点都映射到XOZ这个平面的第一象限内,则这个三维问题可以转化二维问题: 求一条直线,使所有点在这条直线的下方,直线与X轴和Z轴围成的三角形旋转形成的圆锥体积最小. 这样转化之后可以看出直线的临 ...
- [HDU3756]Dome of Circus
题目大意: 在一个立体的空间内有n个点(x,y,z),满足z>=0. 现在要你放一个体积尽量小的圆锥,把这些点都包住. 求圆锥的高和底面半径. 思路: 因为圆锥里面是对称的,因此问题很容易可以转 ...
- HDU 3756
很容易就想到把三维转化成了二维,求出点离Z轴的距离,把这个距离当成X坐标,Z轴当Y坐标,然后就变成了求一个直角三角形覆盖这些点 像上一题一样,确定斜率直线的时候,必定是有一点在线上的.于是,可以把直线 ...
- UVA 1473 Dome of Circus
https://cn.vjudge.net/problem/UVA-1473 题目 给出一些点,问包含这些点的最小圆锥(要求顶点在y轴,底面圆心在原点)的体积 题解 因为圆锥对称,所以可以把所有点旋转 ...
- HDU题解索引
HDU 1000 A + B Problem I/O HDU 1001 Sum Problem 数学 HDU 1002 A + B Problem II 高精度加法 HDU 1003 Maxsu ...
- hdu3756三分基础题
Dome of Circus Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- ACM ICPC 2010–2011, Northeastern European Regional Contest St Petersburg – Barnaul – Tashkent – Tbilisi, November 24, 2010
ACM ICPC 2010–2011, Northeastern European Regional Contest St Petersburg – Barnaul – Tashkent – Tbil ...
- HDU 5515 Game of Flying Circus 二分
Game of Flying Circus Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem ...
随机推荐
- IOS开发之Cocoa编程—— NSUndoManager
在Cocoa中使用NSUndoManager可以很方便的完成撤销操作.NSUndoManager会记录下修改.撤销操作的消息.这个机制使用两个NSInvocation对象栈. NSInvocation ...
- 用例图(UseCase Diagram)—UML图(一)
从上面的用例图模型,我们可以大致了解用例图所描述的是什么.下面进行详细介绍. 用例图,即用来描述什么角色通过某某系统能做什么事情的图,用例图关注的是系统的外在表现,系统与人的交互,系统与其它系统的 ...
- OO真经——关于面向对象的哲学体系及科学体系的探讨(下)
真经第六章——运作 Moving “运动是绝对的——牛顿” 6.1.导言 在前五章中,我们从世界观的这话题开始,逐步引出了抽象.层次.继承和耦合.这些内容,形成了对象论中关于世界的结构体系. ...
- if和switch
在 JavaScript 中,我们可使用以下条件语句:if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码if...else 语句 - ...
- Redis是什么
Redis是什么 Redis是什么,首先Redis官网上是这么说的:A persistent key-value database with built-in net interface writte ...
- spoj 10606 Balanced Numbers 数位dp
题目链接 一个数称为平衡数, 满足他各个数位里面的数, 奇数出现偶数次, 偶数出现奇数次, 求一个范围内的平衡数个数. 用三进制压缩, 一个数没有出现用0表示, 出现奇数次用1表示, 出现偶数次用2表 ...
- [LeetCode]题解(python):139-Word Break
题目来源: https://leetcode.com/problems/word-break/ 题意分析: 给定一个字符串s和一个字典dict,判断s是不是由字典dict里面的元素组成的. 题目思路: ...
- javascript 数组和字符串的转化
字符串转化为数组 'abcde' -> ['a', 'b', 'c', 'd', 'e'] 简单一点的方法,__String.prototype.split__可以将字符串转化为数组,分隔符为空 ...
- python之单例设计模式
设计模式之单例模式 单例设计模式是怎么来的?在面向对象的程序设计中,当业务并发量非常大时,那么就会出现重复创建相同的对象,每创建一个对象就会开辟一块内存空间,而这些对象其实是一模一样的,那么有没有办法 ...
- class类的sizeof计算
class no_virtual { public: void fun1() const{} int fun2() const { return a; } private: int a; } clas ...