构造mex
题意
为了凑 \(mex(k)\) ,\([0,k-1]\) 内的数至少要出现一遍,这些数总共有 \(k\) 个,总和为 $sum=\frac{(k-1)\cdot k}{2} $
所以,如果 \(n<k\) 或者 \(s<sum\),都不行。
所以,剩余 \(n-k\) 个数的构造要满足 \(\sum_1^{n-k} a_i =s-sum\),且 \(k\) 本身不能选。
我们可以采取极端方法构造
首先,如果 \(s-sum\ne k\) 且 \(k\ne 0\) ,那么我们可以构造一个 \(s-sum\) ,然后剩余数都填 \(0\)
如果 \(s-sum==k\) ,这表明,我们需要至少两个比 \(k\) 小的数来弥补一个 \(k\),这个构造需要 \(n-k>1\)(能拼出两个数) 且 \(k>1\)(能拆开成两个比 \(k\) 小的数)
如果 \(k==0\),那么代表最小的数为 \(1\),所以如果 \(n-k>s-sum\),肯定无法构造,反之一定可以(先全部构造1,然后剩余的数随便加)
如果两个都满足,不可能,因为 \(k==0\) 时,\(sum\) 也为零,而 \(s\) 至少为一
code