亲近度排名矩阵
排序算法约 911 字大约 3 分钟
P4800. 亲近度排名矩阵
场次:2026年4月18日-开发岗 · 来源:CodeFun2000 P4800
题目描述
在一项地理数据分析中,收集了 个地点的坐标,每个地点 对应两个整数坐标 。
对任意两个不同的地点 和 ,定义它们的亲近度为
亲近度越小表示两点越接近。
对于每个地点 ,考虑所有 并按亲近度从小到大排序。如果另有 满足 ,则称 是 到 的一个“近邻”。记 为这些近邻的个数。形式化定义:
- 若 ,;
- 。
你的任务是:对于给定的 个地点,计算出 的矩阵 。
约束条件:
- 测试数据组数 不超过 ;
- 每组数据的地点数 ,且所有组的 之和不超过 ;
- 所有坐标均为不超过 的正整数。
输入格式
第一行包含一个整数 ,表示测试数据组数。
对于每组数据:
- 第一行包含一个整数 ,表示地点的个数;
- 接下来的 行,每行包含两个整数 ,表示第 个地点的坐标。
保证所有测试数据中 的总和不超过 。
输出格式
对于每组数据,输出 行,每行包含 个整数,表示矩阵 的对应行。第 行的第 个整数表示 。同一行内的整数以单个空格分隔。各组测试数据的输出之间不需要额外的空行。
示例
示例 1
输入:
1
1
10 20输出:
0说明:
只有 1 个地点,根据定义 ,因此直接输出 0。
示例 2
输入:
1
3
1 1
2 2
3 3输出:
0 0 1
1 0 1
1 0 0说明:
共有 3 个地点,坐标分别为 。
对地点 1():
- 与地点
2的距离平方 ,没有其他点满足 ,故 。 - 与地点
3的距离平方 ,地点2满足 ,故 。
对地点 2():
- 与地点
1的距离平方 ,与地点3的距离平方 ,两者距离相同。排序后该组最后一个位置为1,故 。
对地点 3():
- 与地点
2的距离平方 ,无其他点满足 ,故 。 - 与地点
1的距离平方 ,地点2满足 ,故 。
对角线恒为 0。
示例 3
输入:
1
3
0 0
0 1
1 0输出:
0 1 1
0 0 1
0 1 0说明:
三个地点构成等腰直角三角形。
对地点 1 :到地点 2 的距离平方为 1,到地点 3 的距离平方也为 1,两者相同,排序后组内最后一个位置为 1,因此 。
对地点 2 :到地点 1 的距离平方为 1(位置 0),到地点 3 的距离平方为 2(位置 1),故 ,。
对称地,地点 3 的结果为 ,。
所有对角线元素均为 0。