标签:str date sky 长度 c++ without nat let math
Problem Description
题意:问你是不是正多边形。
思路:瞎暴力XD。直接存所有点间连线的边长,偶数多边形长度一样的肯定有n/2个和n个,奇数多边形相同边长的一定是n啦。
/** @Date : 2016-12-10-22.55
* @Author : Lweleth (SoungEarlf@gmail.com)
* @Link : https://github.com/
* @Version :
*/
//#include <stdio.h>
//#include <iostream>
//#include <string.h>
//#include <algorithm>
//#include <utility>
//#include <vector>
//#include <map>
//#include <set>
//#include <string>
//#include <stack>
//#include <queue>
#include<bits/stdc++.h>
#define LL long long
#define PII pair<int ,int>
#define MP(x, y) make_pair((x),(y))
#define fi first
#define se second
#define PB(x) push_back((x))
#define MMG(x) memset((x), -1,sizeof(x))
#define MMF(x) memset((x),0,sizeof(x))
#define MMI(x) memset((x), INF, sizeof(x))
using namespace std;
const int INF = 0x3f3f3f3f;
const int N = 1e5+20;
const double eps = 1e-8;
struct yuu
{
double x; double y;
bool operator == (const yuu &a) const
{
return (a.x == this->x) && (a.y == this->y);
}
}s[110], t[N];
int cmp(yuu a, yuu b)
{
if(a.x != b.x)
return a.x > b.x;
return a.y > b.y;
}
map<double , int>q;
int main()
{
int T;
scanf("%d", &T);
while(T--)
{
int n;
scanf("%d", &n);
q.clear();
for(int i = 1; i <= n; i++)
scanf("%lf%lf", &s[i].x, &s[i].y);
int cnt = 0;
for(int i = 1; i <= n; i++)
{
for(int j = i + 1; j <= n; j++)
{
double mx = fabs(s[i].x - s[j].x);
double my = fabs(s[i].y - s[j].y);
double len = mx * mx + my * my;
q[len]++;
}
}
int flag = 0;
for(auto i = q.begin(); i != q.end(); i++)
{
if(n & 1 && i->second != n)
{
flag = 1;
break;
}
else if(n % 2 == 0)
{
if(i->second != n / 2 && i->second != n)
{
flag = 1;
break;
}
}
}
if(flag)
printf("NO\n");
else printf("YES\n");
}
return 0;
}
HDU 5533Dancing Stars on Me 基础几何
标签:str date sky 长度 c++ without nat let math
原文地址:http://www.cnblogs.com/Yumesenya/p/6158720.html