HDU 3902 Swordsman 2011 Multi-University Training Contest 7 - Host by ECNU 计算几何
2011-08-04 00:50
579 查看
/* 判断给定的多边形是不是轴对称图形 因为对称轴仅可能经过顶点或者边的终点 只需要枚举这些点能在o(n^2)的复杂度内解决 */ #include<iostream> #include<cstdio> #include<cmath> using namespace std; #define N 40005 #define eps 1e-4; struct node{ double x,y; }p ; int n,flag; double dis(int i,int a) { return (p[i].x-p[a].x)*(p[i].x-p[a].x)+(p[i].y-p[a].y)*(p[i].y-p[a].y); } int main() { while(scanf("%d",&n)!=EOF) { flag=0; for(int i=0;i<2*n;i=i+2) { scanf("%lf%lf",&p[i].x,&p[i].y); if(i!=0) { p[i-1].x=(p[i].x+p[i-2].x)/2.0; p[i-1].y=(p[i].y+p[i-2].y)/2.0;//拓展出边的中点 } } p[2*n-1].x=(p[0].x+p[2*n-2].x)/2.0; p[2*n-1].y=(p[0].y+p[2*n-2].y)/2.0; for(int i=0;i<n;i++)//枚举有可能在对称轴上的点 { double x1=p[i].x-p[i+n].x; double y1=p[i].y-p[i+n].y; int k=i-1; int j=i+1; for(;j<i+n;j++,k--)//检查其他点是否关于此点对称 { if(k<0)k=2*n-1; double x2=p[j].x-p[k].x; double y2=p[j].y-p[k].y; if(x1*x2+y1*y2!=0) break; if(dis(i,j)!=dis(i,k)) break; } if(j==i+n) { flag=1;break; } } if(flag)puts("YES"); else puts("NO"); } }
相关文章推荐
- HDU 3879 Base Station 最大权闭包 2011 Multi-University Training Contest 5 - Host by BNU
- HDU 3917 Road constructions 2011 Multi-University Training Contest 8 - Host by HUST 最大权闭包
- HDU 3920 Clear All of Them I 状态压缩DP 2011 Multi-University Training Contest 9 - Host by BJTU
- HDU 3974 Assign the task 2011 Multi-University Training Contest 14 - Host by FZU 线段树
- HDU 3874 Necklace 2011 Multi-University Training Contest 4 - Host by SDU 树状数组+离散化
- HDU 3972 1 M possible 2011 Multi-University Training Contest 14 - Host by FZU
- hdu 3094 A tree game 2009 Multi-University Training Contest 18 - Host by ECNU
- HDU 3829 Cat VS Dog 2011 Multi-University Training Contest 1 - Host by HNU
- HDU 3830 Checkers 2011 Multi-University Training Contest 1 - Host by HNU
- HDU 3873 Invade the Mars 2011 Multi-University Training Contest 4 - Host by SDU
- Hdu 3936 FIB Query[矩阵快速幂](2011 Multi-University Training Contest 10 - Host by HRBEU)
- HDU 3911 Black And White 2011 Multi-University Training Contest 8 - Host by HUST 线段树应用
- HDU 3870 Catch the Theves 2011 Multi-University Training Contest 4 - Host by SDU
- 2011 Multi-University Training Contest 1 - Host by HNU&&Cat VS Dog
- HDU HDU 3861 The King’s Problem 2011 Multi-University Training Contest 3 - Host by BIT
- HDU3879 Base Station 最大权闭合图/最大密度子图 2011 Multi-University Training Contest 5 - Host by BNU
- HDU 5733 tetrahedron (2016 Multi-University Training Contest 1 计算几何)
- 2016 Multi-University Training Contest 1-1011---HDU 5733 tetrahedron(计算几何)
- 2016 Multi-University Training Contest 3 hdu 5762 Teacher Bo【计算几何】
- 【转】2011 Multi-University Training Contest 3 - Host by BIT