云某公司在基地搬迁到新地点后,规划了一条经过 N 个小区的班车路线。公司计划在这些小区中挑选出 M 个小区作为上车点。小区的位置可以用一维坐标上的整数点表示。每个小区到最近上车点的距离为这两个坐标点差值的绝对值。若小区本身被选为上车点,则其到上车点的距离为 0。
任务:在给定 N 个小区的位置的情况下,选择 M 个上车点,使得所有小区到最近上车点的距离的最大值尽可能小。计算这个最大值的最小值。
二分答案。二分这个最小可能值mid,如何check呢?我们贪心的考虑,我们放车站的时候尽可能大的覆盖到右边的区域,最多能覆盖盖positions[i]+mid这个位置,我们将下一个位置跳到` upper_bound(positions.begin(), positions.end(),positions[i] + mid) - positions.begin();
某公司的班车路线沿途依次经过 N 个住宅小区,公司希望从这些小区中选定 M 个作为上车点。每个小区的位置都可以用一条直线上的整数坐标表示。
若某个小区本身被设为上车点,则它到上车点的距离记为 0;否则,它到某个上车点的距离等于两个坐标差的绝对值。对于任意一种上车点选择方案,将所有小区到其最近上车点距离的最大值称为该方案的最远候车距离。
现在给定全部 N 个小区的坐标,要求选择恰好 M 个小区作为上车点,使得最远候车距离尽可能小。请计算这个最小可能值。
约束条件:
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册