(2017多校2)1011/hdu-6055 Regular polygon(计算几何)
2017-07-28 08:40
411 查看
点我看题
题意:给你n个整数点(这个条件超级重要),rang 求能组成多少个正多边形.
分析:由整数点组成的正多边形只能是正方形,可以画个图看看,发现怎么也找不到除了正四边形以外的其他形状.然后对于每一条边,分别找出它左右两边能与他形成正方形的另外两个点,然后看看这两个点是否存在.最后的答案要除以一个4,因为对于每一个正方形来说,你都通过四个边找了它四次.
参考代码:
题意:给你n个整数点(这个条件超级重要),rang 求能组成多少个正多边形.
分析:由整数点组成的正多边形只能是正方形,可以画个图看看,发现怎么也找不到除了正四边形以外的其他形状.然后对于每一条边,分别找出它左右两边能与他形成正方形的另外两个点,然后看看这两个点是否存在.最后的答案要除以一个4,因为对于每一个正方形来说,你都通过四个边找了它四次.
参考代码:
#include<cstdio> #include<cmath> #include<cstring> #include<algorithm> #include<iostream> using namespace std; #define mem(a,b) memset(a,b,sizeof(a)); const int maxn = 5e2+10; int n; struct Point{ int x; int y; }; Point p[maxn]; bool vis[maxn][maxn]; int ans; void solve( Point a, Point b) { int dx = a.x-b.x; int dy = a.y-b.y; if( a.x+dy >= 0 && a.y-dx >= 0 && b.x+dy >= 0 && b.y-dx >= 0 && vis[a.x+dy][a.y-dx] && vis[b.x+dy][b.y-dx]) ans++; if( a.x-dy >= 0 && a.y+dx >= 0 && b.x-dy >= 0 && b.y+dx >= 0 && vis[a.x-dy][a.y+dx] && vis[b.x-dy][b.y+dx]) ans++; } int main() { while( ~scanf("%d",&n)) { mem(vis,false); int x,y; for( int i = 1; i <= n; i++) { scanf("%d%d",&x,&y); x += 200; y += 200; p[i].x = x; p[i].y = y; vis[x][y] = 1; } ans = 0; for( int i = 1; i < n; i++) for( int j = i+1; j <= n; j++) solve(p[i],p[j]); printf("%d\n",ans/4); } return 0; }
相关文章推荐
- 2017多校联合第二场 1011题 hdu 6055 Regular polygon 计算几何
- hdu 6055 : Regular polygon (2017 多校第二场 1011) 【计算几何】
- HDU 6055 Regular polygon(计算几何+思维)——2017 Multi-University Training Contest - Team 2
- HDU 2017 多校联合训练赛2 1011 6055 Regular polygon map&pair
- HDU 6055 (2017 多校训练赛2 1011)Regular polygon
- hdu 6127 : Hard challenge (2017 多校第七场 1008)(计算几何)
- HDU 6055 17多校 Regular polygon(计算几何)
- HDU-2017 多校训练赛2-1011-Regular polygon
- hdu 6055 简单计算几何,查找点的四种办法 2017 Multi-University Training Contest - Team 2
- 【2017多校训练2+计算几何+板】HDU 6055 Regular polygon
- HDU 6055 Regular polygon(几何数学)(多校2)
- HDU 6055 Regular polygon (计算几何 + 国家队论文结论)
- (2017多校训练第二场)HDU - 6055 & POJ - 2002 Regular polygon 哈希
- 2017 多校训练第二场 HDU 6055 Regular polygon
- 17 多校 - 2 - 1011 - Regular polygon (HDU - 6055)
- Regular polygon(2017多校联赛2。 计算几何)
- 17暑假多校联赛2.11 HDU 6055 Regular polygon
- hdu 6055 Regular polygon(判断正方形)(2017 Multi-University Training Contest - Team 2)
- HDU-2017 多校训练赛7-1011-Kolakoski
- HDU 2017多校联赛-1011 KazaQ's Socks