一句话总结:每次微调改变 2,把 vp 收进 [g−1,g+1] 的代价是 ⌊∣vp−g∣/2⌋,排序加前缀和后对每个 g 算出绝对值之和再扣掉奇偶差。
算法标签:排序、前缀和、二分、数学
算法难度:4/10
边缘推理集群里有 m 台节点,第 p 台当前的时钟偏移是 vp。运维每次只能挑一台节点,把它的偏移加上 2 或者减去 2。这类微调可以重复任意多次。
现在有 k 项校准任务。第 j 项给出目标档 gj,要求把所有节点的偏移都收进闭区间 [gj−1,gj+1]。不同任务彼此独立:做完一项后偏移会恢复成一开始的 v,再处理下一项。
请对每项任务求出最少微调次数。
首行一个正整数 m(1≤m≤105),表示节点台数。
第二行 m 个整数 v1,v2,…,vm(1≤vp≤105),即各台当前偏移。
第三行一个正整数 k(1≤k≤105),表示校准任务条数。
随后 k 行,第 j 行一个整数 gj(1≤gj≤105),即该项任务的目标档。
输出 k 行,第 j 行一个整数,表示第 j 项任务的最少微调次数。
输入
4
5 8 6 11
3
6
9
7
输出
3
4
3
说明
输入
5
3 3 10 1 20
2
3
15
输出
12
23
说明
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册