AT_joisc2017_d 切符の手配 (Arranging Tickets) 题解

AT_joisc2017_d 切符の手配 (Arranging Tickets)

有点省选的味道了。

考虑先定向 min(ai,bi)max(ai,bi)\min(a_i,b_i) \to \max(a_i,b_i)

再考虑翻转,当两个区间无交时,不能同时翻转。

则所有翻转区间交不为空,设为 [l,r][l,r]

考虑二分答案 limlim

考虑枚举 t[l,r]t\in [l,r]bib_i 为翻转后的计数,ziz_i 表示含 ii 的翻转区间数。

则有 bi=ai+(ztzi)zib_i=a_i+(z_t-z_i)-z_i​,根据 bilimb_i\le lim​,有 ai+ztlim2zizt\lceil\frac{a_i+z_t-lim}{2}\rceil \le z_i\le z_t​

考虑贪心从前往后 i[1,t]i\in[1,t] 满足条件,显然为了让 [x+1,n][x+1,n] 满足条件,选择的区间右端点应尽量大。

于是从 ii 向右做扫描线,每次加入 ii 的可选端点,贪心选择可选区间中右端点最大的区间,取到下界即可,最后在判断 [x+1,n][x+1,n] 是否合法,时间复杂度 O(n3logmlogV)\mathcal O(n^3\log m\log V)

性质:在最优解中,设 ttmaxi[l,r]bi\max_{i\in[l,r]} b_i 的下标,有 S=0|S|=0btmaxi=1nbi1b_t \ge \max_{i=1}^{n} b_i-1

证明:若 btmaxi=1nbi2b_t \le \max_{i=1}^{n}b_i-2

  • 若存在翻转区间 [l,r][l,r],则再翻转 [l,r][l,r]btb_t 加一,maxi=1nbi\max_{i=1}^{n}b_i 减一,这种情况不可能是最优解,舍。
  • 否则分别存在以 ll 为左端点和以 rr 为右端点的不同区间,都翻转,btb_t22maxi=1nbi\max_{i=1}^{n}b_i 要么变成 btb_t,要么不增,不断调整,若最后有 S2|S|\le 2,由于不存在区间 [l,r][l,r],所以 S=2|S|=2,继续删除,得到 S=0|S|=0

那么现在 ztz_t 的枚举量是 O(1)\mathcal O(1) 的。

性质:对于 tt,同时有 at=maxi=1naia_t=\max_{i=1}^{n}a_i

证明:设 y[l,r]y \notin [l,r],且 ayat1a_y-a_t \ge 1,又由上有 btby1b_t-b_y \ge -1,则 aybyatbta_y-b_y \ge a_t-b_t,与假设矛盾。

那么现在 ata_t 的值域是 O(1)\mathcal O(1)

性质:最优解包含所有的 aia_i 的最大值的位置。

证明:设 [L,R][L,R] 分别表示 aia_i 的最大值的最左和最右位置,假设有 L<lr<RL<l\le r < R,则若存在将要翻转区间不包含 LL,若翻转了就会变劣,RR 同理。

于是 ata_t 的枚举位置是 O(1)\mathcal O(1) 的。

时间复杂度 O(nlognlogV)\mathcal O(n\log n\log V)

posted @ 2024-01-15 20:19  蒟蒻orz  阅读(11)  评论(0编辑  收藏  举报  来源