专栏文章

P14135 【MX-X22-T6】「TPOI-4F」Miserable EXperience

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

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@minnas3k
此快照首次捕获于
2025/12/02 05:12
3 个月前
此快照最后确认于
2025/12/02 05:12
3 个月前
查看原文
把子树操作放到最后来做,且子树操作合法当且仅当 i,aiafai\forall i,a_i \ge a_{fa_i}
先差分一下,令 ci=aiafaic_i = a_i - a_{fa_i},那么就是要让 i,ci0\forall i,c_i \ge 0,答案就是 ci\sum c_i。一次行操作就是将第 ii 行的 cc11i+1i+1 行的 cc11,代价变化 cnti+1cnti+1cnt_{i+1} - cnt_{i} + 1。所以每行只和点个数 cnticnt_icc 的最小值 pip_i 有关。
先考虑 pi0p_i \ge 0 的情况,考虑把操作 i,i+1,ji,i+1,\ldots j 变为操作 i,ji,j,代价为 cntjcnti+jicnt_j - cnt_i + j - i,设 bi=cnti+ib_i = cnt_i + i,即为 bjbib_j - b_i。这样处理后就不存在形如 (i,j),(j,k)(i,j),(j,k) 这样的重合操作了,所以每个点要么是只出,要么只进,对于只出的点,要求操作的次数 pi\le p_i(否则就小于 00 了)。贪心地,把每个点按 bib_i 从小到大排序,每次取出最小的 bib_i 把前面没匹配的都和它匹配即可(也即每个点向其后缀最小值匹配)。
对于存在 pi<0p_i < 0 的情况,可以先任意操作若干次将 pip_i 都变成非负数再继续调整,只要调整能最优,那么肯定可以到达最优答案。
考虑优化,由于只和后缀最小值之类的后缀信息相关,长链剖分后合并短链的时候大于短链长度的部分可以直接继承,前面直接暴力做就行。
实现方法可以用指针数组实现,方便很多。
复杂度 Θ(n)\Theta(n)

评论

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

正在加载评论...