MEX专题做题记录

CF1364C Ehab and Prefix MEXs

汝可以模拟得之。

维护一个队列模拟即可,建议降橙。

CF1619E MEX and Increments

我的做法是先 \(O(n)\) 找 \(0\),\(0\) 前面的输出 \(cnt_i\),后面的依旧汝可以模拟得之,这回用的是栈。

为什么是栈呢?首先要增加 \(1\) 的话肯定取一个最下花费的填上,增加 \(2\) 就取次小花费的,这么贪不劣。

建议降黄。

CF1375D Replace by MEX

到这里才有青题,这个是构造,操作为一个数替换为序列 MEX。

让用 \(2n\) 次以内的操作使得序列单调不降。

我会 DAY2T1了 先 \(O(n)\) 找 \(0\)......

发现可以构造 \(0,1,2....n-1\) 为啥呢?看感觉想的,那就把 \(0\) 搞出来。

接着求序列 MEX,发现假设求出了 \(i\),那么序列中肯定没有 \(i\) ,我们把它放在正确的位置。

但是这样做会有形如 \(0,3,2,1,4\) 的情况,这个时候我们变成 \(0,5,2,1,4\) 然后就能得到 \(0,5,2,3,4\) 进而变成 \(0,1,2,3,4\)

发现这个就是局部无序变有序,每次排序最多多花一次操作,乍一看 \(2.5n\) 了过不了。

但是发现无序的情况必须要原序列里有这些数,那么 \(0\) 就会少,找 \(0\) 的部分就用了很少的操作,所以还是对的。

CF1744F MEX vs MED

宇宙中最史的题。

发现可以对每个可能 MEX 分别考虑,问题转化为左右端点区间可选。

显然设 MEX 为 \(i\) 那么区间最大长度为 \(2i + 2\),你考虑新填进来的数一定比 MEX 大。

然后这个就是数学功底了一堆 corner 根本判不完。

P4137 Rmq Problem / mex

经典题目 \(998244353\) 年前就写完了,现在来复习一下。

离线询问扫描线,设 \(lst_i\) 表示 \(i\) 最后出现的位置。

然后线段树二分出第一个小于 \(l\) 的输出即可,权值线段树,修改总和为 \(nlogn\)。

也可以莫队,也可以配合分块,在 P16998 里用了。

P17723 [SCP-S 2026] 函数 / func

几天前切的。

发现 OR 非常强,导致 MEX 只有 \(0,1...2^k-1\) 这种有用,对着这个记即可,使用扫描线类似物。

具体的也忘了,但是记得还要判一下 \(k\) 位没有值,这个和上面的当然要拆位了。

AT_abc438_f [ABC438F] Sum of Mex

写过,忘了。

我当时这么龙竟然会拆 MEX?可能我不是这么写的。

分别求 MEX \(>k\) 的方案数然后求和,发现其实是要在一条链上,这个用 LCA 来分讨就完事了。

拆 MEX 的性质还是太重要了。

CF2219D MEX Replacement on Tree

首先考虑没有操作的,可以使用set,这里在题解中学了一种简单的写法,set中维护没出现的数,dfs进入的时候把这个点删除,出去的时候再加上。

这样有什么好处呢?直接 *s.begin() 就是 MEX,我们记为 \(mex_i\)。

这个就可以 \(nlogn\) 求出一个没有操作的答案,然后就是看操作的影响。

下面设对 \(u\) 点进行操作,\(u\) 的点权为 \(a\),操作后一定会变为 \(mex_u\) 我们记为 \(X\)。

考虑对子树的影响,其实就是多了一个 \(X\) 少了一个 \(a\),对 \(u\) 的后代 \(v\) 考虑。

发现 \(X > a\) 一定不优,首先对于这个点是不优的,然后 \(v\) 少了一个 \(a\) 的话 \(X\) 就更没用了。

\(X = a\) 不符合题意所以有 \(X < a\),然后就要分情况讨论。

  • \(mex_v < X\),没有影响。
  • \(mex_v = X,mex_v := min(a,cmex_v)\)。
  • \(mex_v>X,mex_v := min(a,mex_v)\)。

\(cmex_v\) 是啥?就是没出现的第二小的值,这个是我仿照 cmax 造的。

这个用前面的 set 访问 *next(s.begin()) 即可。

设没有操作的答案为 \(sum\),则有:

\(ans = sum + \Sigma (min(cmex_v , a) - X) - \Sigma (mex_w + a)(mex_v = X,mex_w > a)\)。

我们先解决右边的,因为好看,发现其实就是要求所有 \(w\) 的 \(\Sigma mex_w\) 和 \(w\) 的个数。

而 \(w\) 的限制有两个:

  • \(dfn_u \le dfn_w \le dfn_u + sz_u - 1\)。
  • \(mex_w > a\)。

二 维 偏 序。

直接离线上树状数组对值域开,这个容易维护,做完了。

考虑左边的,发现其中一维限制和右边的等价,所以那个 \(X\) 的贡献一样求了。

接下来发现那里还有 min,这个是三维限制,难道用三维偏序吗?

不用,发现第二维退化了,所以排序可以解决两维。

对于每个点 \(x\) 的 \(mex_x\) 分类。

剩下的就和上面类似了,对 \(cmex\) 开树状数组扫描线,每个等价类分别处理。

做完了,所以还是归约到偏序问题扫描线上数据结构。

posted @ 2026-10-27 20:51  wzc6666  阅读(12)  评论(0)    收藏  举报