标签: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