传送门:点击打开链接
分析:O(N^2)复杂度的算法
对于每个点,计算出跟N个点的欧式距离,避免浮点数可以不开根号
对距离排序,统计相同的距离个数
最后输出结果乘2(题意要求)
代码如下:
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 1000+10;
struct Point{
int x,y;
}p[maxn];
int n,ans;
int x,y;
int d[maxn];
int main(){
int T;
scanf("%d",&T);
while (T--){
scanf("%d",&n);
for (int i=1; i<=n; i++) scanf("%d%d",&p[i].x,&p[i].y);
ans = 0;
for (int i=1; i<=n; i++) {
x = p[i].x;
y = p[i].y;
for (int j=1; j<=n; j++) d[j] = (x-p[j].x)*(x-p[j].x) + (y-p[j].y)*(y-p[j].y);
sort(d+1,d+n+1);
int pt = 1;
for (int j=2; j<=n; j++) if (d[pt]==d[j]) ans++; else pt = j;
}
if (ans==0) printf("WA\n"); else printf("%d\n",ans*2);
}
return 0;
}