那么这一题中出现了一个mex的概念 当然不是第一次出现了 但是还是做一下解释 MEX:对于任意非负整数集合 S(非负整数即 0,1,2,3,...),MEX(S)表示:不在集合 S中的最小非负整数。 那么作为补充知识点 下面带来在集合S中求解mex的普通做法 alt

那么回到此题当中 我们来分析一下 给我们一个数组将其所有子序列的和放入S中包括空序列意思就是0 那么我们很快就能想到如果数组中有元素为0那么均可以删除因为最终S中一定有0 所以删去了不影响MEX 符合要求 再来分析普通情况我们发现数组的顺序不会影响S中的元素 所以我们先排一下序 一般情况下排完序比不排序要好处理 那么排完序之后我们来分析如果加入a[i]对S元素的影响 假设一开始S区间的右边界为R 那么什么情况下加入a[i]是不影响的呢 就是a[i]>R+1时(举个例子S为(1,2,3,4,5) 此时MEX=6 a[i]=7 则不会影响MEX的值) 那么后面的元素均可以删除了(因为a[i]是排好序的)有点类似于区间合并 具体代码 alt