专栏文章

题解:P12485 [集训队互测 2024] PM 大师

P12485题解参与者 2已保存评论 1

文章操作

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

当前评论
1 条
当前快照
1 份
快照标识符
@minyhs2l
此快照首次捕获于
2025/12/02 10:25
3 个月前
此快照最后确认于
2025/12/02 10:25
3 个月前
查看原文
击杀了这个题很爽,想到了转置就全对了!
ai=0a_i=0 给所有位置分段,相当于每段有一个集合 SiS_i。从值域的角度入手,处理出元素 vv 的极长未出现前缀长度 cc,所有 ai=0a_i=0 位置的 bqb_q 的生成方式形如:维护当前值 pp 以及位置 qq,找到 >p>p 中最小的 cp>qc_{p'}>q,然后 pp,qq+1p\to p',q\to q+1。一个位置修改时,会影响后面点的排名,但是被选入答案的点的集合变化量是 O(1)\mathcal O(1) 的。维护被选入 pp 的所有值构成的集合 TT,尝试找到 TT 的变化。
想到这个之后前 44 个 sub 都是平凡的。
subtask5:只向某个集合插入元素。考虑在集合 xx 插入 kk 的影响,不妨设此时令 ckx1c_k\to x-1。若 kk 存在于 TT 且在 TT 的排名 x\ge x 那么需要向 kk 后面找到一个插入 TT 的元素。用一点数据结构手法,对于值 vv 维护 fv=iT[i<v]cvf_v=\sum_{i\in T}[i<v]-c_v(显然除去 cv=m+1c_v=m+1cc 是互不相同的)。对于 vTv\in T,发现其等价于 fv<0f_v<0fv0f_v\ge 0 等价于 v∉Tv\not\in T。对 ff 做区间加/减,找到 fi=0f_i=0 的位置调整到 TT 里即可。
拓展到从集合中删除元素:可能将修改的 kk 加入 TT 中,反过来维护一个 gvg_v。使用线段树支持对 f,gf,g 的区间加以及最小值位置的提取。时间复杂度 O(nlogn)\mathcal O(n\log n)

评论

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

正在加载评论...