[PE 741] Binary grid colouring

  • 题意

    计数在 \(n\times n\) 的网格上染色,使得每行每列恰有 \(2\) 个黑色格子的方案数。

    旋转或翻转同构算一种,模 \(10^9+7\)

    \(n\le 2\times 10^7\)

  • 题解

    先考虑没有同构怎么做。

    考虑一张左右各 \(n\) 个点的完全二分图,现在就是要求环覆盖方案数。

    那么答案就是将右侧点划分成若干环的方案数乘上 \(n!\)

    设环和答案分别为 \(G(x),F(x)\)

    有:

    \[\begin{align} G(x)&=\sum_{i\ge 2}\frac{x^i}{2i}\\ &= -\frac{1}{2}\ln(1-x)-\frac{x}{2}\\ F(x)&=e^{G(x)}\\ F'(x)&=e^{G(x)}G'(x)\\ F’(x)& =F(x)\frac{x}{2(1-x)}\\ nf_n&=(n-1)f_{n-1}+\frac{1}{2}f_{n-2} \end{align} \]

    然后利用 \(\text{Burnside}\),考虑群 \(D_8\) 的其余 \(7\) 个元素。

    1. 上下或左右翻转

      这是容易的。

    2. 沿对角线翻转

      \(l_i\)\(r_i\) 合并,那么就是每个点度数为 \(1/2\) 的图的个数。

      那么

      \[\begin{align} G(x)&=\sum_{i\ge 3}\frac{(i+1)x^i}{2i}+\frac{x^2}{2} \\ &=-\frac{1}{2}\ln(1-x)+\frac{x^3}{2(1-x)}+\frac{x^2}{4}-\frac{x}{2}\\ F'(x)&=F(x)\frac{-x^3+2x}{2(1-x)^2}\\ nf_n&=2(n-1)f_{n-1}-(n-3)f_{n-2}-\frac{1}{2}f_{n-4}\\ \end{align} \]

    3. 旋转 \(\pi\)

      这部分较为复杂,还是一样地考虑,但是要奇偶讨论一下

      • \(2\mid n\)

        \[\begin{align} G(x)&=\sum_{i\ge 2}\frac{x^i}{2i}+\frac{x}{4}\\ &=-\frac{1}{2}\ln(1-x)-\frac{x}{4}\\ F'(x)&=F(x)\frac{x+1}{4(1-x)}\\ nf_n&=(n-1)f_{n-1}+\frac{1}{4}(f_{n-1}+f_{n-2}) \end{align} \]

      • \(2\nmid n\)

        可以发现此时就是求一个前缀和。

    4. 旋转 \(\frac{\pi}{4},\frac{3\pi}{4}\)

      容易说明 \(2\nmid n\) 无解,剩下的同理,最后是:

      \[nf_n=(2n-1)f_{n-1}-f_{n-2}+2f_{n-3} \]

    这样将所有的贡献算出来就好了,复杂度 \(O(n)\)

    注意到所有的贡献都是整式递推,所以理论最优为 \(O(\sqrt{n}\log n)\)

posted @ 2022-05-19 20:07  leukocyte  阅读(144)  评论(0)    收藏  举报