CF1436E Complicated Computations 题解

发布时间 2023-11-15 20:14:35作者: Ideal_whistle

CF1436E Complicated Computations

mex的定义是:一个区间中没有出现过的数中最小的整数。

对于一个区间,当正整数x在区间中没有出现过、[1, x - 1](整数)在区间中全部出现过,那么正整数x就是该区间的mex

正整数x在区间中没有出现过

我们一共有n个数字,所有的数字都不出现一次,就一共有n次的不出现。

x1.......x2.......x3...........................x4(其中x1 = x2 = x3 = x4)若一个区间的mex值是x,那么这样的区间一定在两个x之间。

这样的在两个相同值之间的线段一共有约等于n条(<n)

所以我们现在要枚举区间的mex,从小往大枚举

并且在找到所有与枚举值相同的点,在判断这些值相同的点之间有没有出现过[1, mex - 1],若是有一个区间满足[1, mex - 1]都出现过,则该mex可以继续往上面加

 怎么判断区间l到r之中值域为[1,x]的点都出现过一次呢?

考虑用线段树维护。

我们首先要值域[1,x],所以线段树上的区间是值域的区间

那么线段树上的值是什么呢,而且还要维护l到r的条件。

我们发现r的条件比较好转换,只需要边添加点,边查询就可以了(这里我们可以不用边枚举mex的值边计算mex是否满足条件,而是先枚举所有的点,找到与前面一个点相同的位置并判断这个区间可不可行,这样也能更好地解释子区间的数量大约是n条了)

那么就是l的值了,还有[1,x]的出现条件

一个很自然的想法是维护[1,x]的出现数量,但是区间的数量并不能反映个体。

那么最大最小值呢?

什么东西的最大最小值才可以反映[1,x]是否全部在[l,r]中出现过,而且还要与l有一定的联系。

坐标

[1,x]中的元素的 最后一个坐标 的 最小值。

最后一个是贪心的思想,最小值是为了通过满足条件,如果最后一个都不能满足条件,那么这个区间的mex一定不是mex,而是[1,mex-1]中的一个数字。

qwq.2023-11-15 20:09:29