思路
这个题初步性质就不好找, 嘻嘻, 不嘻嘻
关键观察:
因为一共有 \(2n+1\) 个格子, 所以假设有一组方案, 满足每行每列均不同, 那么给所有数异或一个值 \(y\in[0, 2^k-1]\), 依然满足每行每列不同, 且最终答案异或了 \(y\)
从这个角度, 不管 \(q\) 取什么值, 答案均相同。因此, 可以直接不管异或和的限制考虑, 最终答案除以 \(2^k\) 即可
这个观察可能以我的智商只能从大样例中看出来, 汗
行列不同如何计算
考虑先把第二行填一下, 然后我们容斥其中有多少列相同, 其他的方案数也比较显然, 然后容斥完了就好了
官方题解
填好第二行, 方案数为 。
对于第一行, 我们容斥其中有 列和第二行相同, 剩下的方案数为 。
因此答案为:
动态维护几个部分, 时间复杂度为
总结
良好思维题
神秘容斥, 但是还好, 这种选择种类的问题还比较好统一计算