将每个站台 i 的乘客可接受的始发站点位置转化为一个区间:
Li=max(1,i−ri),Ri=min(n,i+ri)问题等价为:在 [1,n] 上选择尽量少的整数点作为始发站点,使得每个区间 [Li,Ri] 至少包含一个被选点。这是标准的区间打点(区间命中)最小点集问题,可用贪心解决:
一条笔直的公路上依次设有 n 个公交站台,编号 1 到 n。第 i 个站台的乘客愿意步行最多 ri 的距离去乘车,步行距离定义为站台编号之差的绝对值。公交公司计划选择部分站台设置为始发站点,乘客只能在设置了始发站点的站台上车。始发站点必须设在已有的站台位置。问最少需要设置多少个始发站点,才能使得任意站台 i 的乘客都能在不超过 ri 的步行范围内到达至少一个始发站点。
数据组数 T≤104,站台数量 1≤n≤2×105,步行上限 0≤ri≤n−1。保证所有测试数据的 n 之和不超过 2×105。
第一行包含一个整数 T,表示测试数据组数。 对于每组数据:
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册