Everything on It ARC096E

[ARC096E] Everything on It

称一个不可重集 aa 合法当且仅当:

  • aa 中仅含 [0,2n−1][0,2^n-1] 中的数。
  • 对于任意一个二进制位 0≤i<n0\le i<n,aa 中至少有 22 个数满足其在这一二进制位为 11 。

计数合法的 aa。

n≤3000n\le 3000。对一个质数 mm 取模。

先来基本的推式子:

Ans=∑a∏i=1n[count⁡(a,i)≥2]=∑a∏i=1n1−[count⁡(a,i)≤1]=∑a∏i=1n1−[count⁡(a,i)=0]−[count⁡(a,i)=1]\begin{aligned} \text{Ans}&=\sum_a\prod_{i=1}^n[\operatorname{count}(a,i)\ge 2]\\ &=\sum_a\prod_{i=1}^n1-[\operatorname{count}(a,i)\le 1]\\ &=\sum_a\prod_{i=1}^n1-[\operatorname{count}(a,i)=0]-[\operatorname{count}(a,i)=1] \end{aligned}

其中 count(a,i)⁡\operatorname{count(a,i)} 表示 aa 中第 ii 位的出现次数。

然后就是基本操作了。称 count⁡(a,i)=0\operatorname{count}(a,i)=0 为 I\mathcal{I} 类限制,count⁡(a,i)=1\operatorname{count}(a,i)=1 为 II\mathcal{II} 类限制。那么钦定 ii 个二进制位为 I\mathcal{I} 类限制,jj 个二进制位为 II\mathcal{II} 类限制。容斥系数为 (−1)i+j(-1)^{i+j}。同时我们要钦定他们的位置,故还有 (ni,j)\binom{n}{i,j} 的贡献。并且,由于 n−i−jn-i-j 个位置没有任何的限制,于是又有 22n−i−j2^{2^{n-i-j}} 的贡献。

Part I. I\mathcal{I} 类限制

先看简单的 I\mathcal{I} 类限制。此时这些位置必须为 00,相当于强行抹去了这些位的存在。因此计数时只需要强行抹去这些位的存在就行。

Part II. II\mathcal{II} 类限制

这些限制相当于要求这 jj 个位置必须恰好被一个数覆盖。然后就不会了……

注意到,这件事情,其实相当于将 jj 个位置划分为若干个集合。为什么?例如当 n=j=2n=j=2 时,有这四种数:

00,01,10,1100,01,10,11

一个 1111 的出现可以使得两个位置都被覆盖。反之如果 1111 不出现,则必须是 0101 和 1010 出现。换言之,一个二进制数 KK 的出现,相当于将其内部所有 11 的位置划分为一个集合。而又因为所有的 jj 个位置都要被划分,因此这件事情其实相当于将 jj 个数划分为若干个集合。设划分为 kk 个集合,则有 {jk}j\brace{k} 中划分方法。

然后由于还有 2n−i−j2^{n-i-j} 个位置没有被分配,自由配置,所以实际上划分的 kk 个集合,每一个集合都可以自由选择 2n−i−j2^{n-i-j} 中方案填充其他的没有限制的二进制位,于是总方案数还有 (2n−i−j)k(2^{n-i-j})^k 的贡献。

Part III. 整合答案

接下来就很简单了。

将上面的写下来:

∑i,j(ni,j)(−1)i+j22n−i−j∑k{jk}(2n−i−j)k\sum_{i,j}\binom{n}{i,j}(-1)^{i+j}2^{2^{n-i-j}}\sum_k{j\brace k}(2^{n-i-j})^k

直接计算可以做到 O~(n3)\tilde{\mathcal{O}}(n^3) 。

类似的,由于 i,ji,j 很像,不妨令 p=i+jp=i+j,那么原式为:

∑p(np)(−1)p22n−p∑k(2n−p)k∑j{jk}(pj)\sum_p\binom{n}{p}(-1)^p2^{2^{n-p}}\sum_k(2^{n-p})^k\sum_j {j\brace k}\binom{p}{j}

由于 ∑j{jk}(pj)={p+1k+1}\sum\limits_{j}{j\brace k}\binom{p}{j}={p+1\brace k+1},于是:

∑p(np)(−1)p22n−p∑k(2n−p)k{p+1k+1}\sum_p\binom{n}{p}(-1)^p2^{2^{n-p}}\sum_k(2^{n-p})^k{p+1\brace k+1}

复杂度 O~(n2)\tilde{\mathcal{O}}(n^2),可以通过。