做题记录 25.5.21
\(\textcolor{purple}\odot\) CF1906K Deck-Building Game
答案为 \(\sum_{S\subseteq \{1,2,\cdots,n\}}[\bigoplus_{u\in S}a_u=0]2^{|S|}\)
定义 \(x^p\times x^q=x^{p\oplus q}\),则答案等于 \([x^0]\prod_{i=1}^n (1+2x^{a_i})\)
用 \(\text{FWT}\) 表示异或时的变换,则答案为
此处的 \(\text{times}\) 表示两个多项式系数逐位相乘
令 \(G=\text{times}_{i=1}^n \text{FWT}(1+2x^{a_i})\),考虑如何求出 \(G\)
由于 \([x^i]\text{FWT}(F)=\sum_{j}(-1)^{\text{popcount}(i\cap j)}F_j\),因此 \([x^u]\text{FWT}(1+2x^{a_i})=1+2(-1)^{\text{popcount}(u\cap a_i)}\)
因此
令 \([x^u]C=\sum_{i=1}^n [\text{popcount}(u\cap a_i)\equiv 1\pmod 2]\),则 \([x^u]G=(-1)^{[x^u]C}3^{n-[x^u]C}\),问题转化为求出 \(C\)
令 $[xu]F=\sum_{i=1}n (1+2(-1)^{\text{popcount}(u\cap a_i)}) $,则 \([x^u]F=-[x^u]C+3(n-[x^u]C)\),即 \([x^u]C=\frac14(3n-[x^u]F)\),考虑如何求出 \(F\)
发现 \(F=\sum_{i=1}^n \text{FWT}(1+2x^{a_i})=\text{FWT}(\sum_{i=1}^n(1+2x^{a_i}))\),容易 \(O(n+V\log V)\) 求出
总时间复杂度 \(O(n+V\log V)\)

浙公网安备 33010602011771号