随着灌溉长度的增长,被灌溉的总长度单调不降,具有单调性,因此可以使用二分解决。
二分灌溉长度,并O(N)扫一遍各个灌溉器的贡献区间,判断能否达到至少k的总灌溉长度,能就减少二分长度,否则增大二分长度。
在一条无限长的直线上,放置着 n 个自动灌溉器,第 i 个灌溉器的坐标为 ai。现在需要为所有灌溉器设定一个统一的灌溉长度 L。当一个灌溉器启动时,它会从自身坐标开始,向右连续灌溉 L 个单位长度,即对应的区间为 [ai,ai+L−1]。所有灌溉器将按照它们的坐标从小到大的顺序依次启动。由于直线上的每个位置最多只能被灌溉一次,如果某个区间已经被之前的灌溉器覆盖过,则后续灌溉器将只灌溉尚未被覆盖的部分。我们希望最终被灌溉的总长度至少为 k。请计算满足条件的最小整数 L。
约束条件:
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册