题意: 给出n个坐标 , 问能组成多少个正方形
解法: 暴力解法=>直接枚举4个点 =》时间复杂度 O(n^4) => (1000)^4 =>10^12显然会T
利用正方形的性质, 枚举两个点作为满足正方形条件的一条边AB,,
即可推导出AB上方满足条件的边CD的坐标(C的坐标和D的坐标), 和 AB下方满足条件的 边C‘’D‘’的坐标(C‘’的坐标和D‘’的坐标);
只要C和D(C''和D'')同时存在在给定的n个坐标中,那么这个正方形就是存在的 => sum++;
由于, 每次枚举一条边, 那么, 一个正方形的四条边都会被枚举一次, 也就是说每个满足条件的正方形都被计算了4次, 所有得出的答案 = sum/4
Code:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int maxn = 1e4+50;
int getHa