ZJOI2019 开关

ZJOI2019 开关

给定长度为 \(n\) 的序列 \(s\),每个点被选择的概率为 \(\frac{p_i}{\sum p_i}\),对于全 \(0\) 序列,每次操作为翻转一个值,求期望操作多少次可以得到目标序列。

\(n\le 100,\sum p_i\le 5\cdot 10^4\)

\(\rm Sol:\)

似乎有 OGF 的推导方法和集合幂级数的推导方法。


神仙题。

集合幂级数

我们先考虑一个高斯消元:

\[f_i=1+\sum_{T\oplus j=i}f_j\cdot p_j \]

我们构建一个集合幂级数 \(F(x)=\sum f_ix^i\)

另一边,我们构建 \(G(x)=\sum_{j} p_jx^j\),那么我们有:

\[F(x)=\sum_{i} x^i+G(x)\cdot F(x)+c\cdot x^{|\varnothing|} \]

最后一项表示消去 \(x^{\varnothing}\) 的系数。

那么考虑 FWTxor 的结果,对于集合 \(u\),其结果为:

\[\mathscr{F(x)_{u}=\textrm{FWT}(\sum_{i} x^i)+G(x)\cdot F(x)+\textrm{FWT}(c\cdot x^{|\varnothing|})} \]

对于 \(\rm xorFWT\),我们知道 \(\textrm{FWT}(c\cdot x^{|\varnothing|})_k=c\),同时我们进行移位得到:

\[\mathscr{F(x)_u(1-G(x))}=\sum_{k} (-1)^{u\land k}+c \]

\(u=0\) 时,我们有 \(\textrm{FWT}(G(x))=\sum_k p_i\cdot (-1)^{k\land 0}=\sum_k p_k=1\)

所以我们有:

\[0=2^n+c\to c=-2^n \]

所以我们得到,对于 \(k\ne 0\),有:

\[\textrm{FWT}( F(x))=\frac{\sum_k (-1)^{u\land k}-2^n}{1-\textrm{FWT}(G(x))}\to \frac{-2^n}{1-\textrm{FWT}(G(x))} \]

对于 \(k=0\),有:

\[\textrm{FWT}(F(x))_0=\sum F(x)_k \]

\[\textrm{FWT}(F(x))_0=\sum \textrm{IFWT}(\textrm{FWT}(x))_k \]

注意到 \(F(x)_{0}=0\),所以我们有:

\[\textrm{FWT}(F(x))_0=\sum_{k\ne 0} \sum_j \frac{1}{} \]

\[\textrm{FWT}(F(x))_0=\sum_{k\ne 0} \frac{2^n}{1-\textrm{ FWT}(G(x))} \]

我们所求的答案即为 \(f_{S}\) 即:

\[\begin{aligned} &\frac{1}{2^n}\sum \textrm{FWT}(F(x))_u\cdot (-1)^{u\land S} \\ &=\frac{1}{2^n}\bigg(\sum_{u\ne 0} \frac{-2^n}{1-\textrm{FWT}(G(x))_u}\cdot (-1)^{u\land S}+\sum_{u\ne 0}\frac{2^n}{1-\textrm{FWT}(G(x))}\bigg) \\&=\sum_{u\ne 0}\frac{1}{1-\textrm{FWT}(G(x))_u}\cdot (1-(-1)^{u\land S}) \\&=2\sum_{u\ne 0}\frac{1}{1-\textrm{FWT}(G(x))_u}[|u\land S|\mod 2=1] \end{aligned}\]

另一边,我们注意到 \(\textrm{FWT}(G(x))=\sum (-1)^{k\land S}p_i\)

注意到 \(\sum p_i=1\),所以我们有 \(\textrm{FWT}(G(x))=\sum (-1)^{k\land S}p_k=\sum_{k\not \in S} p_k-\sum_{k \in S}p_i=1-2\sum_{k\in S} p_k\),于是可以得到答案为:

\[2\sum_{u\ne 0}\frac{1}{2\sum_{k \in u} p_k}[|u\land S|\mod 2=1] \]

\[\sum_{u\ne 0}\frac{1}{\sum_{k \in u} p_k}[|u\land S|\mod 2=1] \]

可以 \(\mathcal O(2^n)\) 处理,注意到值域较小,可以考虑进行 01 背包的 dp,复杂度为 \(\mathcal O(\sum p\cdot n)\)

posted @ 2020-09-12 12:21  Soulist  阅读(101)  评论(0编辑  收藏  举报