【题解】P12020 CF1033F 加强版
NOT 运算符是骗人的,你给那些位的结果取反一下就好。
考虑 3 进制 XOR-FWT,那么 \(\mathtt{A,O,X}=1\) 限制的就是每位是 \(2,1/2,1\),\(=0\) 限制的就是 \(0/1,0,0/2\)。
这样可以做到 \(O(3^{n}n+q2^w)\)。
考虑限制每位有两种取值的运算较多时怎么做。
令 \(f_{i,S}\) 表示第 \(i\) 位限制等于 \(S\),则 \(f_{i,\{0\}}=\frac{1}{2}(f_{i,\{0,1\}}+f_{i,\{0,2\}}-f_{i,\{1,2\}})\),所以可以求 \(g_S\) 表示三进制下每一位都不和 \(S\) 的三进制位相等的方案数,可以通过一次变换求出。
然后这样就有一个 \(q\min(3^{w-k},2^k)\) 的做法了。
浙公网安备 33010602011771号