zoukankan      html  css  js  c++  java
  • [Codeforces 1300D]Aerodynamic(计算几何)

    [Codeforces 1300D]Aerodynamic(计算几何)

    题面

    给出一个凸多边形,判断该多边形平移得到的包含原点的所有多边形的并得到的吐血,和这个凸多边形本身相似。

    分析

    发现如果点数为奇数显然不行。否则判断这个多边形是否中心对称即可,即判断对边中点是否重合。

    代码

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #define maxn 100000
    using namespace std; 
    struct Vector{
        double x;
        double y;
        Vector(){
    
        }
        Vector(double _x,double _y){
            x=_x;
            y=_y;
        }
        friend Vector operator + (Vector p,Vector q){
            return Vector(p.x+q.x,p.y+q.y);
        }
        friend Vector operator - (Vector p,Vector q){
            return Vector(p.x-q.x,p.y-q.y);
        }
        friend Vector operator * (Vector a,double d){
            return Vector(a.x*d,a.y*d);
        }
        friend Vector operator / (Vector a,double d){
            return Vector(a.x/d,a.y/d);
        }
        friend bool operator == (Vector p,Vector q){
        	return p.x==q.x&&p.y==q.y;
    	}
    	friend bool operator != (Vector p,Vector q){
        	return !(p==q);
    	}
    };
    typedef Vector point;
    inline double dot(Vector p,Vector q){
        return p.x*q.x+p.y*q.y;
    }
    inline double dist(point p,point q){
        return sqrt(dot(p-q,p-q));
    }
    inline double cross(Vector p,Vector q){
        return p.x*q.y-p.y*q.x;
    }
    inline double length(Vector x){
        return sqrt(dot(x,x));
    } 
    int n;
    point a[maxn+5],b[maxn+5];
    int main(){
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++){
    		scanf("%lf %lf",&a[i].x,&a[i].y);
    	}
    	if(n%2==1){
    		printf("NO
    ");
    	}else{
    		for(int i=2;i<=n/2;i++){
    			if((a[i]+a[i+n/2])!=(a[i-1]+a[i-1+n/2])){
    				printf("NO
    ");
    				return 0;
    			}
    		}
    		printf("YES
    ");
    	}
    }
    
  • 相关阅读:
    Java运算符
    Java数据类型,常量与变量
    内存
    cmd编码
    DELL G7重置电脑操作步骤
    关于es6中...运算符的总结
    js数组与字符串相互转换
    JS中的continue,break,return的区别
    git提交步骤
    数据修改后点击确定没有保存 还是原来的数据
  • 原文地址:https://www.cnblogs.com/birchtree/p/12289948.html
Copyright © 2011-2022 走看看