构造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


posted @ 2024-09-08 22:19  纯粹的  阅读(6)  评论(0编辑  收藏  举报