AGC034F

AGC034F

给定一个 \(n\) 和长度为 \(2^n\) 的数组 \(A\)

初始有一个为 \(0\) 的变量 \(x\),每次以 \(\frac{A_i}{\sum A_j}\) 的概率使其异或 \(i\)

对于 \(i\in [0,2^n)\)\(x\) 第一次变为 \(i\) 的期望步数。

\(\rm Sol:\)

我们先列出高斯消元的方程,然后考虑集合幂级数:

\[\begin{aligned} &f_i = 1+\sum_{j\oplus k=i} f_j\cdot p_k \\& \textrm{FWT}(F(x))=\textrm{FWT}(\sum_k x^k)+ \textrm{FWT}(F(x))\cdot \textrm{FWT}(P(x))+\textrm{FWT}(c) \\& \textrm{FWT}(F(x))_i=\textrm{FWT}(G(x))_i+\textrm{FWT}(F(x))_i\cdot \textrm{FWT}(P(x))_i+c \end{aligned}\]

我们先考虑求出具体的 \(c\),考虑 \(f_i\) 的取值,应该有:

\[\textrm{FWT}(F(x))_i=\frac{\textrm{FWT}(G(x))_i+c}{1-\textrm{FWT}(P(x))_i} \]

然后我们考虑 \(i=0\) 时,此时 \(\textrm{FWT}(P(x))_0=\sum p_i=1\),所以此时有 \(\textrm{FWT}(F(x))_0\cdot 0=\textrm{FWT}(G(x))_0+c\)

于是有:

\[c=-\textrm{FWT}(G(x))_0=-2^n \]

于是对于 \(i\ne 0\) 的部分,我们有:

\[\textrm{FWT}(F(x))_i=\frac{-2^n}{1-\textrm{FWT}(P(x))_i} \]

我们进行暴力集合幂级数求逆,对于 \(i=0\) 的部分,利用定义式导出恒等式求解即可。

复杂度为 \(\mathcal O((n+\log w)\cdot 2^n)\)

posted @ 2020-09-12 12:12  Soulist  阅读(127)  评论(0)    收藏  举报