Loading

4.1 CW 模拟赛 T3. 数表

思路

这个题初步性质就不好找, 嘻嘻, 不嘻嘻

关键观察:

因为一共有 \(2n+1\) 个格子, 所以假设有一组方案, 满足每行每列均不同, 那么给所有数异或一个值 \(y\in[0, 2^k-1]\), 依然满足每行每列不同, 且最终答案异或了 \(y\)
从这个角度, 不管 \(q\) 取什么值, 答案均相同。因此, 可以直接不管异或和的限制考虑, 最终答案除以 \(2^k\) 即可

这个观察可能以我的智商只能从大样例中看出来, 汗


行列不同如何计算
考虑先把第二行填一下, 然后我们容斥其中有多少列相同, 其他的方案数也比较显然, 然后容斥完了就好了

官方题解

填好第二行, 方案数为 2k×(2k1)××(2kn)2^{k} \times (2^{k}-1) \times \cdots \times (2^{k}-n)

对于第一行, 我们容斥其中有 cc 列和第二行相同, 剩下的方案数为 (2kc)××(2kn+1)(2^{k} - c) \times \cdots \times (2^{k} - n + 1)

因此答案为:
12ki=0n(1)i(ni)×(2k)!(2ki)!(2kn1)!(2kn+1)!\dfrac{1}{2^{k}} \sum_{i=0}^{n} (-1)^{i} {n \choose i} \times \frac{(2^k)!(2^k - i)!}{(2^{k} - n - 1)!(2^{k} - n + 1)!}

动态维护几个部分, 时间复杂度为 O(n)\mathcal{O}(n)

总结

良好思维题

神秘容斥, 但是还好, 这种选择种类的问题还比较好统一计算

posted @ 2025-04-01 20:02  Yorg  阅读(17)  评论(0)    收藏  举报