首页 > 其他 > 详细

「ZJOI2019」开关

时间:2020-11-02 22:34:55      阅读:28      评论:0      收藏:0      [点我收藏+]

题目链接

\(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

「ZJOI2019」开关

原文:https://www.cnblogs.com/realSpongeBob/p/ZJOI2019D2T1.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!