将每棵已有节点能够覆盖的范围转化为区间:
[xi−ci, xi+ci]
由于只需要覆盖通道 [0,L],因此将区间限制在:
[max(0,xi−ci), min(L,xi+ci)]
某园区中有一条长度为 L 的线性巡检通道,可以将整条通道表示为坐标区间 [0,L]。为了保证沿线设备能够持续得到服务,通道附近已经部署了一批覆盖节点。
目前共有 k 个已有节点。第 i 个节点位于坐标 xi,其覆盖半径为 ci,因此它能够覆盖距离 xi 不超过 ci 的位置。
现在还可以增设若干个统一规格的新节点。每个新节点的覆盖半径均为 D,其部署位置可以根据需要确定。
需要使已有节点与新增节点的覆盖范围合在一起后,能够覆盖整个区间 [0,L]。
请计算,为达到这一目标,最少需要新增多少个节点。
保证任意两个已有节点的位置均不相同。
第一行输入三个整数 L,k,D,分别表示巡检通道的长度、已有节点的数量以及新节点的覆盖半径。
数据满足:
1≤L≤1000000000
1≤k≤100000
1≤D≤1000000000
接下来 k 行,每行输入两个整数 xi,ci,表示第 i 个已有节点的位置及其覆盖半径。
数据满足:
1≤xi≤L
1≤ci≤1000000000
并且所有 xi 两两不同。
输出一个整数,表示为了覆盖整条巡检通道,最少需要新增的节点数量。
输入
10 2 2
2 2
8 2
输出
1
说明
第一个已有节点能够覆盖通道上的 [0,4],第二个已有节点能够覆盖 [6,10]。
因此目前只有 [4,6] 这一段尚未得到完整覆盖。新增一个覆盖半径为 2 的节点即可补齐这部分区域,所以最少需要新增 1 个节点。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.