首先将中继站按照自动激活时刻排序,然后用二重循环检查每个中继站都能激活哪些中继站(曼哈顿距离不超过其半径),然后依次按照时刻激活,激活的时候使用dfs递归进行激活传播,激活过的中继站就在vis中标记为false,累加实际激活的中继站数,超过m就输出当前中继站的自动激活时刻就可以了
python
在一个无限大的二维平面上,分布着 n 个信号中继站。第 i 个中继站的坐标为 (xi,yi),它会在时刻 si 自动激活。激活时,该中继站会向所有与它曼哈顿距离不超过 ri 的其他中继站发送激活信号,这些中继站会被立刻激活(无论它们自身的 si 是否到达),并继续引发新的激活。若两个坐标 (x1,y1) 与 (x2,y2) 的曼哈顿距离定义为 ∣x1−x2∣+∣y1−y2∣。请你计算,最早在什么时刻,平面上至少有 m 个中继站处于激活状态。
数据范围:单个测试数据中 n 不超过 2000,1≤m≤n;所有测试数据的 n 之和不超过 3000。坐标的绝对值不超过 109,0≤si≤109,0≤ri≤2imes109。
第一行包含一个整数 T(1≤T≤100),表示测试数据组数。每组数据格式如下: 第一行输入两个整数 n 和 m,表示中继站总数和至少需要激活的中继站数量。 接下来 n 行,第 i 行包含四个整数 xi、yi、si、ri,依次描述第 i 个中继站的横坐标、纵坐标、自动激活时刻和激活影响半径。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册