Aerodynamic CodeForces - 1300D(计算几何&&判断是否为中心对称图形)

题目链接:好扯淡的一道题目
题意:P(x,y)表示将P沿着向量(x,y)的方向平移得到的凸多边形,如果P(x,y) 涵盖了点(0,0) (边界上也算),那么这个点就属于T,问T与P是否是相似的。
看着挺吓唬人的,其实就是判断是不是中心对称图形。
代码如下:

#include<bits/stdc++.h>
#define ll long long
using namespace std;

const int maxx=1e5+100;
struct node{
	int x,y;
}p[maxx];
int n;

int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d%d",&p[i].x,&p[i].y);
	if(n&1) cout<<"NO"<<endl;
	else 
	{
		n>>=1;
		int x=p[1].x+p[n+1].x;
		int y=p[1].y+p[n+1].y;
		for(int i=2;i<=n;i++)
		{
			if(p[i].x+p[n+i].x!=x||p[i].y+p[n+i].y!=y) 
			{
				cout<<"NO"<<endl;
				return 0;
			}
		}
		cout<<"YES"<<endl;
	}
	return 0;
}

努力加油a啊,(o)/~

发布了426 篇原创文章 · 获赞 24 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/starlet_kiss/article/details/104262366