专栏文章

P11107 题解

P11107题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mipr5kcw
此快照首次捕获于
2025/12/03 16:35
3 个月前
此快照最后确认于
2025/12/03 16:35
3 个月前
查看原文
下文的 \lceil操作\rfloor 表示将集合 AA 变成 Ultra(A)\mathrm{Ultra(A)}
先考虑如何求出 AA 的 mex-limit,我们观察一些性质。
性质一:若存在 i[0,2k1]i\in[0,2^k-1] 使得 iAi\notin A,则无论经过多少次操作,都有 mex(A)<2k\mathrm{mex}(A)<2^k
于是我们可以将 AA2k\ge 2^k 的数删去,不影响 mex-limit。
性质二:设 kk 为满足 i[0,2k1],iA\forall i\in[0,2^k-1],i\in A 的最大的 kk,若 2kA2^k\in A,则我们令 A{i2k2kiiA}A\leftarrow\{i-2^k\mid 2^k\le i\land i\in A\},不影响 mex-limit。
证明:我们发现一次操作后,AA 中所有数的二进制下第 kk 位都发生了变化,且此时 [0,2k1][0,2^k-1] 没有被填满,因此我们可以删掉操作后 [2k,2k+11][2^k,2^{k+1}-1] 的部分,即操作前 [0,2k1][0,2^k-1] 的部分。
性质三:设 kk 为满足 i[0,2k1],iA\forall i\in[0,2^k-1],i\in A 的最大的 kk,若 2kA2^k\notin A(2k+11)A(2^{k+1}-1)\in A,则我们可以令 A{i(2k+11)2kiiA}A\leftarrow\{i\oplus(2^{k+1}-1)\mid 2^k\le i\land i\in A\},不影响 mex-limit。
证明:此时 mex(A)1=2k1\mathrm{mex(A)}-1=2^k-1,故操作一次后 2k+112^{k+1}-1 就变成了 2k2^k,再利用性质二即可得证。
性质四:设 kk 为满足 i[0,2k1],iA\forall i\in[0,2^k-1],i\in A 的最大的 kk,若 2kA2^k\notin A(2k+11)A(2^{k+1}-1)\notin A,则 AA 的 mex-limit 为 2k2^k
性质五:任意集合都是 mex-stable 的,且 mex-limit 必定为 22 的幂。
有了这几个性质,我们就可以进行 DP 了,设 fw,c,if_{w,c,i} 表示我们在 [0,2w1][0,2^w-1] 中选择 ii 个不同的数,且 00 必须选择,得到集合的 mex-limit 为 2c2^c 的方案数,转移如下:
  • kk 为满足 i[0,2k1],iA\forall i\in[0,2^k-1],i\in A 的最大的 kk,若 kw2k\le w-2,则 [2w1,2w1][2^{w-1},2^w-1] 中的数必定不会影响 mex-limit,我们从 fw1,c,jf_{w-1,c,j} 转移过来,系数是 (2w1ij)\dbinom{2^{w-1}}{i-j}
  • k=w1k=w-1
    • 2w1A2^{w-1}\in A,则根据性质二,我们从 fw1,c,i2w1f_{w-1,c,i-2^{w-1}} 转移过来。
    • 2w1A,(2w1)A2^{w-1}\notin A,(2^w-1)\in A,则根据前面的性质,此时我们发现若 [2w1+2w2,2w1][2^{w-1}+2^{w-2},2^w-1] 填满了,那么 mex-limit 还会递归到 [2w1,2w1+2w21][2^{w-1},2^{w-1}+2^{w-2}-1],因此我们需要设一个辅助 DP。
      gw,c,ig_{w,c,i} 表示在 [0,2w1][0,2^w-1] 中选择 ii 个不同的数,且 00 必须选择,2w12^w-1 必须不选择,得到集合的 mex-limit 为 2c2^c 的方案数,则 fw,c,if_{w,c,i} 会从 gw1,c,jg_{w-1,c,j} 转移过来。
    • 2w1A,(2w1)A2^{w-1}\notin A,(2^w-1)\notin A,则根据性质四,此时 mex-limit 为 2w12^{w-1},方案数为 (2w12i2w1)\dbinom{2^{w-1}-2}{i-2^{w-1}}
  • k=wk=w,那么是平凡的。
gg 的转移和 ff 是类似的,注意 ffgg 在转移时可能有一些边界情况。
若直接实现这个 DP,则时间复杂度是 O(22kpoly(k))\mathcal O(2^{2k}\mathrm{poly}(k)) 级别的,注意到转移是卷积的形式,且模数 MM 减去一后可以被 2182^{18} 整除,故我们只需先求出 MM 的原根,就可以用 NTT 优化转移的时间复杂度。
最后的时间复杂度是 O(i=0k2ii2)=O(2kk2)\mathcal O(\sum_{i=0}^k2^ii^2)=\mathcal O(2^kk^2) 的。

评论

0 条评论,欢迎与作者交流。

正在加载评论...