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+(zt−zi)−zi​b_i=a_i+(z_t-z_i)-z_i​,根据 bi≤lim​b_i\le lim​,有 ⌈ai+zt−lim2⌉≤zi≤zt​\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(n3log⁡mlog⁡V)\mathcal O(n^3\log m\log V)。

性质:在最优解中,设 tt 为 max⁡i∈[l,r]bi\max_{i\in[l,r]} b_i 的下标,有 ∣S∣=0|S|=0 或 bt≥max⁡i=1nbi−1b_t \ge \max_{i=1}^{n} b_i-1。

证明:若 bt≤max⁡i=1nbi−2b_t \le \max_{i=1}^{n}b_i-2。

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

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

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

证明:设 y∉[l,r]y \notin [l,r],且 ay−at≥1a_y-a_t \ge 1,又由上有 bt−by≥−1b_t-b_y \ge -1,则 ay−by≥at−bta_y-b_y \ge a_t-b_t,与假设矛盾。

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

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

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

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

时间复杂度 O(nlog⁡nlog⁡V)\mathcal O(n\log n\log V)。

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