HDU 4454 Stealing a Cake(暴力计算几何)
来源:互联网 发布:iphone延时摄影软件 编辑:程序博客网 时间:2024/05/19 09:14
思路:直接枚举圆上的角度,然后算点到圆上一点距离和圆上一点到矩形最短距离就可以了...
#include<bits/stdc++.h>using namespace std;#define pi acos(-1.0)#define INF 0x7fffffffstruct Point{double x,y;};Point s,c,recta,rectb,t;double dist(Point a,Point b){return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}double PointoRecDist(Point p,Point ra,Point rb){double dx=0,dy=0;if(p.x<ra.x) dx = ra.x-p.x;else if(p.x>rb.x)dx = p.x-rb.x;if(p.y<ra.y)dy = ra.y-p.y;else if (p.y>rb.y)dy = p.y-rb.y;return sqrt(dx*dx+dy*dy);}int main(){ while(scanf("%lf%lf",&s.x,&s.y)!=EOF){if(s.x==0 && s.y==0)break;double r;scanf("%lf%lf%lf",&c.x,&c.y,&r); scanf("%lf%lf",&recta.x,&recta.y);scanf("%lf%lf",&rectb.x,&rectb.y);if (recta.x>rectb.x)swap(recta.x,rectb.x);if (recta.y>rectb.y)swap(recta.y,rectb.y); double ans = INF;for(double ang = 0.0;ang<=360;ang+=0.01){t.x = c.x+cos(ang/180*pi)*r;t.y = c.y+sin(ang/180*pi)*r;ans = min(ans,PointoRecDist(t,recta,rectb)+dist(t,s));}printf("%.2lf\n",ans);}}
0 0
- HDU 4454 Stealing a Cake(暴力计算几何)
- HDU 4454 Stealing a Cake (计算几何+三分)
- HDOJ 4454 Stealing a Cake 计算几何
- HDU 4454 Stealing a Cake(三分暴力枚举)
- hdu 4454 Stealing a Cake(三分法)
- HDU 4454 - Stealing a Cake(三分)
- hdu 4454 Stealing a Cake(三分法)
- HDU 4454 Stealing a Cake (三分)
- hdu 4454 Stealing a Cake
- HDU 4454 Stealing a Cake
- HDU 4455 Stealing a Cake(计算几何 点到圆 到矩形距离)
- hdu 4454 Stealing a Cake(三分妥妥的)
- Hdu 4454 Stealing a Cake(枚举或三分)
- hdu 4454 Stealing a Cake (三分)
- HDU 4454 Stealing a Cake题解
- hdu 4454 Stealing a Cake(三分)
- HDU 4454 Stealing a Cake --枚举
- hdu 4454 Stealing a Cake(三分)
- 第5.12节 复杂声明的图形表示及递归下降语法分析程序解读
- HDU 4455 Substrings(dp)
- Shader,想说爱你不容易。
- R语言:循环
- Jackson和FastJson性能谁更快
- HDU 4454 Stealing a Cake(暴力计算几何)
- JAVA面向对象-----值交换(基本数据类型 数组类型 对象的值 字符串的)
- FastDFS设计理念
- js断点调试心得
- 最近那些事
- Android的Preference
- 《JavaScript 闯关记》
- 《JavaScript 闯关记》之简介
- JAVA面向对象-----接口的概述