您的位置:首页 > 其它

HDU 5533 Dancing Stars on Me

2015-11-10 13:45 381 查看
题意:给你n个点,问这n个点能否组成正n边形

因为整点正多边形只能是正方形,所以随便搞搞就可以

#include <cstdio>
#include <algorithm>
using namespace std;

struct P
{
int x, y;
P(){}
P(int _x, int _y){x = _x; y = _y;}
}p[105];
bool operator < (P a, P b) {return (a.x != b.x) ? a.x < b.x : a.y < b.y;}
P operator - (P a, P b) {return P(a.x - b.x, a.y - b.y);}
int dot(P a, P b) {return a.x * b.x + a.y * b.y;}
int dis2(P a, P b) {return (a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y);}

bool solve()
{
if(dot(p[0] - p[3], p[1] - p[2]) != 0) return false;
if(dis2(p[0], p[3]) != dis2(p[1], p[2])) return false;
return true;
}

int main()
{
int T;
scanf("%d", &T);

while(T--)
{
int n;
scanf("%d", &n);

for(int i = 0; i < n; i++)
scanf("%d%d", &p[i].x, &p[i].y);

if(n != 4)
{
printf("NO\n");
continue;
}

printf("%s\n", solve() ? "YES" : "NO");
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: