专栏文章

P14203 这次要永远 做朋友

P14203题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@minl1fdy
此快照首次捕获于
2025/12/02 04:09
3 个月前
此快照最后确认于
2025/12/02 04:09
3 个月前
查看原文
考虑 f(l+1,r)=tf(l+1,r) = t 的判断,设 si=2preiis_i = 2pre_i - i,其中 preipre_iii 前缀 tt 的出现次数,那么就是 sr>sls_r > s_l
观察 sis_i 有什么性质,若下一个数是 tt 就加 11,否则减 11,可以发现当 tt 出现次数较少时 ss 是几乎单降的,于是可以猜测有用的点(存在 j>isj>sij<isj<sij>i \land s_j > s_i \lor j < i \land s_j < s_i)只有 O(cnt)O(cnt) 个,因为每次上升时只会影响多影响 O(1)O(1) 个点。进一步地,所有答案的区间并大小也只有 O(cnt)O(cnt),因为每次插入一个点最多拓展 O(1)O(1) 位,所以也是对的。
枚举 f(l,r)f(l,r),处理出这些有用的点(小于后缀最大值或大于前缀最小值),然后对每个区间先 O(n)O(n) 求出 mex 大于等于 tt 的区间。令 RiR_i 为以 ii 为左端点的最小右端点使得 mex t\ge t,显然 RiR_i 是单调不降的,从左到右扫,每次若删掉的数 t\le t,则将 Ri+1=max(Ri,nxti)R_{i+1} = \max(R_i,nxt_i),否则就是 RiR_i
然后考虑求答案,也就是求逆序对个数,由于相邻 sis_i 的差不超过 11,所以在加入或删除点的时候有变化的个数也是 O(1)O(1),直接双指针扫即可。
复杂度 O(n)O(n)

评论

0 条评论,欢迎与作者交流。

正在加载评论...