第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 E-回旋星空

传送门:点击打开链接

分析: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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值