2017 Multi-University Training Contest
来源:互联网 发布:汉奇中走丝编程视频 编辑:程序博客网 时间:2024/06/08 19:36
http://acm.hdu.edu.cn/showproblem.php?pid=6055
题意:
给你n个点的坐标,坐标以整型输入,问所有的点能组成多少个正多边形。
思路:
比赛的时候以为会有很多种情况,其实冷静下来想了一下,在坐标都为整数点的情况下,只有正方形这一种情况才能构成正多边形,因为其他正多边形的内角会造成别的点不是整数点。在输入点的时候处理一下,每个加100,来防止超出数组的范围。每次对于一个点,看另外的三个点是否都存在,如果都存在即存在一个正方形,因为对于每一个点都重复计算了4次,所以最后输出ans / 4。
代码:
#include <stdio.h>#include <math.h>#include <string.h>#define MAXN 1005using namespace std;bool mapp[MAXN][MAXN];struct point { int x, y;} p[MAXN];point xuanzhuan(point a, point b) { point c; c.x = -(a.y - b.y) + b.x; c.y = (a.x - b.x) + b.y; return c;}int solve(point a, point b) { for (int i = 0; i < 4; i++) { point c = xuanzhuan(a, b); a = b; b = c; if ((c.x >= 0 && c.x <= 200) && (c.y >= 0 && c.y <= 200)) { if (!mapp[c.x][c.y]) { return 0; } } else { return 0; } } return 1;}int main() { int n, ans; while (~scanf("%d", &n)) { ans = 0; memset(mapp, false, sizeof(mapp)); for (int i = 0; i < n; i++) { scanf("%d %d", &p[i].x, &p[i].y); p[i].x += 100; p[i].y += 100; mapp[p[i].x][p[i].y] = true; } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i != j) { ans += solve(p[i], p[j]); } } } printf("%d\n", ans / 4); }}
阅读全文
0 0
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- #2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- #2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- OSG 学习第四天:光照
- CSU-ACM2017暑假训练9-区间DP C
- 良好的编程习惯
- NFS的挂载
- 利用C语言编写一个通讯录,包括用户界面
- 2017 Multi-University Training Contest
- Android的日志工具Log
- KMP算法
- 三十天
- 有关散列表
- 多校4 HDU6069
- pat-aChain the Ropes (25)
- 单向链表的一些基础接口的实现
- 数论(基础欧拉函数)