问题要求在最多修改 k 个基站频率的前提下,使相邻基站频率差的最大值(干扰度)尽可能小。由于可以任意设置修改后的频率值,当我们将目标干扰度限制为某个阈值 L 时,若一条边两端基站的初始频率差 ∣fu−fv∣>L,则该边会“破坏”我们的目标,必须修改这条边至少一个端点的频率;反之,若 ∣fu−fv∣≤L,则即使两端点都不修改,该边也能满足要求。
将初始频率差大于 L 的边称为 坏边。问题转化为:在坏边构成的边集上,是否存在一个顶点覆盖(选出的顶点集与每条坏边相邻),且顶点覆盖的大小不超过 k?树上最小顶点覆盖可以通过树形 DP 在 O(n) 时间内求出。再对 L 进行二分查找即可得到最小的可行干扰度。
具体步骤:
某通信网络由 n 个基站构成,基站间通过 n−1 条光纤连接形成一棵树。每个基站 i 有一个初始工作频率 fi(整数)。为避免相邻基站间产生严重干扰,要求相邻基站的频率之差尽可能小。定义网络的 干扰度 为所有相邻基站对 (u,v) 的频率差绝对值的最大值:
D(f)=(u,v)∈Emax∣fu−fv∣技术人员可以对至多 k 个基站进行频率重设,每个重设后的频率可以是任意整数(不受初始范围限制)。你的目标是选择重设方案,使重设后网络的干扰度达到最小。求出这个最小的干扰度。
约束条件:
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.