考虑中间格子不能有相同的点,其实是没用的。
其唯一用处是用来规定最后的是无法重叠的。
我们可以证明最后位置的无重叠和中间不重叠是充要的。
那显然可以我们对每个点往后连边:
形式的话的说:
对 ((x,y)) 往 ([a_i = (x + |k - y|),s]) 连边。
那么所有点都有位置当且仅当有二分图完美匹配。
那么依据 (Hall) 定理:
二分图有最优匹配的条件:
(forall V in S,|V| < |N(V)|,N(V) = igcup_{x in V,(x,y) in E(x)}y)
那么套用到这题。
每次我们加入一个点则在 (a_i) 处加一。
那么则有每个位置后缀和 (p(i) leq s - j + 1)
那么变项一下 (p(i) + j - 1 leq s)
那么单点求后缀转成区间,那么就是区间加,全局(max)。
吉老师线段树即可。