7月20日模拟赛总结

here.

T1 置换环。容易发现,把所有元素的起始位置和终点位置建边之后,会形成许多个环,每次交换相当于删掉了一个点,显然处理掉这个环的操作次数即为环的大小 -1。总操作次数当然就是所有环的点数-1之和,也就是 n-环的个数了。

T2 树剖。我的树上差分做法事实上是错的。

T3 发现求区间 mex 是困难的,那么就可以转化为求 \([1,l-1]\)\([r+1,n]\) 出现的最小正整数,使用线段树即可方便解决。

T4 不妨设长度为 \(k\) 的那段连续相同区间为 \([l,r]\),则容易发现一段最长不下降子序列由三部分构成:\([1,l-1]\) 中的最长不下降子序列 + \([l,r]\) + 以 \(r+1\) 开头的最长不下降子序列。

为什么前面不一定是 \(l-1\) 结尾,后面却必须是 \(r+1\) 开头?首先,对于区间 \([l,r]\),它后面接上的最长不下降子序列至少以 \(r+1\) 开头,不可能跑到 \(r+1\) 前面。其次,即使 \(r+1\) 后面有更长的最长不下降子序列,那么此时就可以将 \([l,r]\) 移动到更长的 \(r+1\) 那边去,这样一定会更优,因为前面的 \(l-1\) 选择面更广。

这样,从后往前做一遍最长不下降子序列 求出第三部分,然后枚举 \([l,r]\),用树状数组维护第一部分的最大值即可解决本题。

成绩:10+0+0+0=0,rk3。

总结:交换操作想到置换环。

posted @ 2025-07-24 22:37  _KidA  阅读(3)  评论(0)    收藏  举报