「ZJOI2019」开关

题目链接

\(f_S\) 表示第一次到达 \(S\) 状态的期望步数,\(p_{\{i\}}\) 表示将当前状态异或上 \(\{i\}\) 的概率,则有:

\[\begin {align*} f_{\emptyset} & = 0 \\ f_S & = 1 +\sum_{j\bigoplus k}f_jp_k \\ \end {align*} \]

\(\hat{f}\) 表示 \(f\)\(\operatorname{FWT}\) 结果,其余同理,则有:

\[\hat{f}=\hat{I}+\hat{f}\hat{p}+c \]

其中,\(I=\sum_S x^S\)\(c\) 是一个用于修正 \(f_{\emptyset}\) 的常数。
移项,得:

\[\hat{f}_S(1-\hat{p}_S) = \hat{I}_S+c \]

注意到 \(\hat{p}_{\emptyset} = 1, \hat{I}_{\emptyset}=2^n\),故 \(c = -2^n\)。且 \(\forall S\neq\emptyset\),有 \(\hat{p}_S < 1\),故:

\[\begin {align*} \hat{f}_S & = \frac {-2^n}{1-\hat{p}_S} \\ & = \frac {-2^n}{1-\sum_T\hat{p}_T\left(-1\right)^{|S\cap T|}} \\ & = \frac {-2^n}{2\sum_{i\in S}p_i} \end{align*} \]

把答案手动 \(\operatorname {IFWT}\) 回去,有:

\[\begin {align*} f_S & = \frac 1{2^n}\sum_T\left(-1\right)^{|S\cap T|}\hat{f}_T \\ & = \frac {\hat{f}_{\emptyset}}{2^n} - \sum_{T\neq\emptyset}\left(-1\right)^{|S\cap T|}\frac 1{2\sum_{i\in T}p_i} \end{align*} \]

\(f_{\emptyset}=\frac 1{2^n}\sum_T \hat{f}_T=0\)\(\hat{f}_{\emptyset}=-\sum_{T\neq\emptyset}\hat{f}_T\),代入化简,得:

\[\begin {align*} f_S & = \sum_{T\neq\emptyset}\left(1-\left(-1\right)^{|S\cap T|}\right)\frac 1{2\sum_{i\in T}p_i} \\ & = \sum_{T\neq\emptyset}\frac{[|S\cap T|\mod 2=1]}{\sum_{i\in T}p_i}\\ \end {align*} \]

注意到 \(\sum p\) 很小,直接大力 dp 就好了,复杂度 \(\operatorname O(n\sum p)\)

可以使用多项式技巧继续优化,在本题中没有必要。

Code

posted @ 2020-11-02 21:51  realSpongeBob  阅读(78)  评论(0编辑  收藏  举报