文章目录
The Strict Teacher (Hard Version)
- 思考问题!那么多个人抓一个人,是否是每一个人都是对于最优策略的答案是有贡献的?
- 答案是
否定
的,其实问题可以简化为三种情况:- 所有的老师都在
大卫的右边
,那么根据最优策略,最快只能是距离大卫最近的老师抓到他 - 所有的老师都在
大卫的左边
,那么根据最优策略,最快也只能是距离大卫最近的老师抓到他 - 除此之外,大卫被最近的两个老师包围,那么根据最优策略,大卫将被这两个老师抓获(
具体是哪一个老师不重要!
)
- 所有的老师都在
- 根据上面的三种情况,我们发现
首先需要对老师的初始位置进行排序,那么情况就转化为大卫在不同情况下的活动空间的计算问题
- 情况1:答案就是
b[0]-1
- 情况2:答案就是
n-b[-1]
- 情况3:答案就是
二分得到大卫具体被哪两个老师包围,那么就是(b[index]-b[index-1])//2
- 情况1:答案就是
import bisectt = int(input())for _ in range(t):n,m,q = map(int,input().split())b= list(map(int,input().split()))b.sort()a = list(map(int,input().split()))for i in range(q):if a[i] < b[0]:print(b[0]-1)elif a[i] > b[-1]:print(n-b[-1])else:index = bisect.bisect_left(b,a[i])print((b[index] - b[index-1])//2)