/*
HDU 6055 - Regular polygon [ 分析,枚举 ]
题意:
给出 x,y 都在 [-100, +100] 范围内的 N 个整点,问组成的正多边形的数目是多少
N <= 500
分析:
分析可知,整点组成的正多边形只能是正方形
故枚举两个点,验证剩下两个点的位置 坑点: 由于点的范围是 [-100, +100],故经过计算得出的点的范围可能是 [-300,+300],注意越界 编码时长:46分钟(-1)
*/
#include <bits/stdc++.h>
using namespace std;
int n;
bool mp[1005][1005];
int ans;
int x[505], y[505];
void solve(int x1, int y1, int x2, int y2)
{
if (x1 > x2) swap(x1, x2), swap(y1, y2);
int x3, y3, x4, y4;
x3 = x1 - (y2-y1);
y3 = y1 + x2-x1;
x4 = x2 - (y2-y1);
y4 = y2 + x2-x1;
if (mp[x3][y3] && mp[x4][y4]) ans++;
x3 = x1 + y2-y1;
y3 = y1 - (x2-x1);
x4 = x2 + y2-y1;
y4 = y2 - (x2-x1); if (mp[x3][y3] && mp[x4][y4]) ans++;
}
int main()
{
while (~scanf("%d", &n))
{
memset(mp, 0, sizeof(mp));
for (int i = 1; i <= n; i++)
{
scanf("%d%d", &x[i], &y[i]);
x[i] += 500, y[i] += 500;
mp[x[i]][y[i]] = 1;
}
ans = 0;
for (int i = 1; i <= n; i++)
for (int j = i+1; j <= n; j++)
solve(x[i], y[i], x[j], y[j]);
printf("%d\n", ans/4);
}
}

  

最新文章

  1. 用U盘安卓esxi虚拟机出现 error loading /s.v00 错误解决办法
  2. js中几种常用的输出方式
  3. Android-webview和js互相调用
  4. [Android] 升级了新的android studio之后 发生如下的报错,The following classes could not be instantiated:
  5. cxxnet在windows下配置遇到的问题
  6. 2015年可用的TRACKER服务器大全
  7. Socket网络编程(2)--服务端实现
  8. crontab实现每秒执行
  9. windows服务创建与管理
  10. c 深度剖析 6
  11. Mac 下 docker安装
  12. How to Setup Chroot SFTP in Linux (Allow Only SFTP, not SSH)
  13. C++学习笔记7——模板
  14. PyCrpyto windows安装使用方法
  15. POJ 3311 Hie with the Pie (BFS+最短路+状态压缩)
  16. Chapter 1 Securing Your Server and Network(9):使用Kerberos用于身份验证
  17. HTML学习二
  18. python的time模块常用内置函数
  19. datatable 笔记 服务器端查询
  20. UDP核心API讲解

热门文章

  1. WijmoJS V2019.0 Update2发布:再度增强 React 和 Vue 框架的组件功能
  2. Minimum Cut(2015沈阳online)【贪心】
  3. 二项式反演/minmax容斥初探
  4. 杭电2019多校第一场,Problem I,String 2019
  5. Jenkins常用插件介绍
  6. JDBC24homework
  7. Plugin 表格列自定义显示隐藏插件TableCustom.js
  8. javascript学习方法指南
  9. 【Git的基本操作五】比较文件差异
  10. VS调试 启动vs报错--未启动IIS