AT_joisc2017_d 切符の手配 (Arranging Tickets)
有点省选的味道了。
考虑先定向 min(ai,bi)→max(ai,bi)。
再考虑翻转,当两个区间无交时,不能同时翻转。
则所有翻转区间交不为空,设为 [l,r]。
考虑二分答案 lim。
考虑枚举 t∈[l,r],bi 为翻转后的计数,zi 表示含 i 的翻转区间数。
则有 bi=ai+(zt−zi)−zi,根据 bi≤lim,有 ⌈2ai+zt−lim⌉≤zi≤zt。
考虑贪心从前往后 i∈[1,t] 满足条件,显然为了让 [x+1,n] 满足条件,选择的区间右端点应尽量大。
于是从 i 向右做扫描线,每次加入 i 的可选端点,贪心选择可选区间中右端点最大的区间,取到下界即可,最后在判断 [x+1,n] 是否合法,时间复杂度 O(n3logmlogV)。
性质:在最优解中,设 t 为 maxi∈[l,r]bi 的下标,有 ∣S∣=0 或 bt≥maxi=1nbi−1。
证明:若 bt≤maxi=1nbi−2。
- 若存在翻转区间 [l,r],则再翻转 [l,r],bt 加一,maxi=1nbi 减一,这种情况不可能是最优解,舍。
- 否则分别存在以 l 为左端点和以 r 为右端点的不同区间,都翻转,bt 加 2,maxi=1nbi 要么变成 bt,要么不增,不断调整,若最后有 ∣S∣≤2,由于不存在区间 [l,r],所以 ∣S∣=2,继续删除,得到 ∣S∣=0。
那么现在 zt 的枚举量是 O(1) 的。
性质:对于 t,同时有 at=maxi=1nai。
证明:设 y∈/[l,r],且 ay−at≥1,又由上有 bt−by≥−1,则 ay−by≥at−bt,与假设矛盾。
那么现在 at 的值域是 O(1)。
性质:最优解包含所有的 ai 的最大值的位置。
证明:设 [L,R] 分别表示 ai 的最大值的最左和最右位置,假设有 L<l≤r<R,则若存在将要翻转区间不包含 L,若翻转了就会变劣,R 同理。
于是 at 的枚举位置是 O(1) 的。
时间复杂度 O(nlognlogV)。