HDU 3902 Swordsman 2011 Multi-University Training Contest 7 - Host by ECNU 计算几何

    /*
	判断给定的多边形是不是轴对称图形
	因为对称轴仅可能经过顶点或者边的终点
	只需要枚举这些点能在o(n^2)的复杂度内解决
	*/
	#include  
	#include
	#include
    using namespace std;  
    #define N 40005  
	#define eps 1e-4;
    struct node{  
        double x,y;  
    }p[N];  
	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

你可能感兴趣的:(ACM-计算几何)