对于固定的地点 i,题目要求对每个 j 计算出 S(i,j),即满足 k=i、k=j 且 d(i,k)≤d(i,j) 的地点 k 的个数。
把定义变形一下会更清晰:
在一项地理数据分析中,收集了 n 个地点的坐标,每个地点 i 对应两个整数坐标 (xi,yi)。
对任意两个不同的地点 i 和 j,定义它们的亲近度为
d(i,j)=(xi−xj)2+(yi−yj)2亲近度越小表示两点越接近。
对于每个地点 i,考虑所有 jei 并按亲近度从小到大排序。如果另有 kei,j 满足 d(i,k)≤d(i,j),则称 k 是 i 到 j 的一个“近邻”。记 S(i,j) 为这些近邻的个数。形式化定义:
你的任务是:对于给定的 n 个地点,计算出 n×n 的矩阵 S。
约束条件:
第一行包含一个整数 T,表示测试数据组数。 对于每组数据:
保证所有测试数据中 n 的总和不超过 2000。
对于每组数据,输出 n 行,每行包含 n 个整数,表示矩阵 S 的对应行。第 i 行的第 j 个整数表示 S(i,j)。同一行内的整数以单个空格分隔。各组测试数据的输出之间不需要额外的空行。
输入
1
1
10 20
输出
0
说明
只有 1 个地点,根据定义 S(1,1)=0,因此直接输出 0。
输入
1
3
1 1
2 2
3 3
输出
0 0 1
1 0 1
1 0 0
说明
共有 3 个地点,坐标分别为 (1,1),(2,2),(3,3)。
对地点 1((1,1)):
2 的距离平方 d(1,2)=2,没有其他点满足 ≤2,故 S(1,2)=0。3 的距离平方 d(1,3)=8,地点 2 满足 d(1,2)=2≤8,故 S(1,3)=1。对地点 2((2,2)):
1 的距离平方 d(2,1)=2,与地点 3 的距离平方 d(2,3)=2,两者距离相同。排序后该组最后一个位置为 1,故 S(2,1)=S(2,3)=1。对地点 3((3,3)):
2 的距离平方 d(3,2)=2,无其他点满足 ≤2,故 S(3,2)=0。1 的距离平方 d(3,1)=8,地点 2 满足 d(3,2)=2≤8,故 S(3,1)=1。对角线恒为 0。
输入
1
3
0 0
0 1
1 0
输出
0 1 1
1 0 1
1 1 0
说明
三个地点构成等腰直角三角形。
对地点 1 (0,0):到地点 2 的距离平方为 1,到地点 3 的距离平方也为 1,两者相同,排序后组内最后一个位置为 1,因此 S(1,2)=S(1,3)=1。
对地点 2 (0,1):到地点 1 的距离平方为 1(位置 0),到地点 3 的距离平方为 2(位置 1),故 S(2,1)=0,S(2,3)=1。
对称地,地点 3 (1,0) 的结果为 S(3,1)=1,S(3,2)=0。
所有对角线元素均为 0。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册