codeforces 613A Peter and Snow Blower
来源:互联网 发布:mac电脑查看ip地址 编辑:程序博客网 时间:2024/04/26 11:13
数学题,核心是求给定圆心到多边形的最短和最长距离,选用哪种公式非常重要.。。wa了半天发现Point定义里面居然写成了int T_T
最大距离一定是到某一个顶点
最小则不一定,与圆心,线段两定点构成的三角形形状有关。
我用到了三边求面积公式——海伦公式:s=sqrt(p*(p-a)*(p-b)*(p-c)); 其中p=(a+b+c)/2;
贴代码:
#include<iostream>#include<cstdio>#include<cmath>#define INF 10000000using namespace std;const int MAX_N=1e6+10;const double PI=acos(-1.0);struct Point{ double a,b;}p[MAX_N];double getl(Point X,Point Y){ double d1=(X.a-Y.a)*(X.a-Y.a); double d2=(X.b-Y.b)*(X.b-Y.b); return sqrt(d1+d2);}double getlength(Point A,Point B,Point C,double &temp)/// C to A-B{ double a=getl(A,C); double b=getl(B,C); double c=getl(A,B); temp=max(a,b); if(a*a>=b*b+c*c)/// B or A >=90 return b; if(b*b>=a*a+c*c) return a; double pp=(a+b+c)/2; double s=(pp-a)*(pp-b)*(pp-c)*pp; s=sqrt(s); double d=s*2/c; return d;}int main(){ int n; scanf("%d",&n); Point T; scanf("%lf%lf",&T.a,&T.b); for(int i=0;i<n;i++) scanf("%lf%lf",&p[i].a,&p[i].b); double maxx=-(double)INF; double minn=(double)INF; double temp; for(int i=0;i<n;i++) { minn=min(minn,getlength(p[i],p[(i+1)%n],T,temp)); maxx=max(maxx,temp); } double ans=maxx*maxx-minn*minn; ans*=PI; printf("%.10lf\n",ans); return 0;}
0 0
- codeforces 613A Peter and Snow Blower
- CodeForces 613 A. Peter and Snow Blower(计算几何)
- Peter and Snow Blower CodeForces
- Codeforces Peter 614 C and Snow Blower
- codeforces 614 C Peter and Snow Blower
- CodeForces 614C Peter and Snow Blower
- Codeforces 614C Peter and Snow Blower
- CodeForces 614C. Peter and Snow Blower
- Codeforces Peter 614 C and Snow Blower
- CodeForces 613A Peter and Snow Blowe
- Codeforces Round #339 (Div. 2)-C. Peter and Snow Blower
- CodeForces 614C Peter and Snow Blower【计算几何】
- Codeforces Round #339 (Div. 2)-C. Peter and Snow Blower
- 【14.36%】【codeforces 614C】Peter and Snow Blower
- Codeforces Round #339 (Div. 2)C. Peter and Snow Blower(简单几何)
- Codeforces Round #339 (Div. 2)C. Peter and Snow Blower(几何模板)
- cf#339-C - Peter and Snow Blower-简单几何
- codeforce #339(div2)C Peter and Snow Blower
- 嵌入式程序员面试问题集锦
- 1002:谁拿了最多奖学金
- Android 带输入框圆角Dialog--EditDialog
- XML和Json格式的比较
- zookeeper运维参考文档
- codeforces 613A Peter and Snow Blower
- justep工具使用(规则约束)
- 第一篇文章。留个标记。
- 关于listview自定义滚动条和背景
- Python动态监控日志的内容
- javascript数组取值
- Environment Tree(环境树)
- hdu 5281 Senior's Gun(贪心)(思维)
- Dalvik虚拟机异常处理机制