【题解】开关
\(\texttt{ZJOI2019 }\text{开关}\)
我们记输入的刻画概率的数组为 \(p'\) ,并假定对应的 \(p\) 为按哪个开关的概率,即 \(\sum_{i=1}^np_i=1\) 。考虑期望dp,\(state\) 是被打开的开关的序号组成的集合,全集 \(U\) 即所有序号组成的集合,记 \(dp_{state}\) 代表开门状态为 \(state\) 时的期望步数(注意此处 \(dp\) 其实是和题目中给出的开门状态是无关的,并非递推以求得 \(dp_s\))。\(state\not=\varnothing\) 时,有方程
显然,其实是有 \(dp_{\varnothing}=0\) 的。所以,记对称差卷积为 \(*\) ,集合生成函数 \(P(z)=\sum_{i=1}^np_iz^{\{i\}}\),有
事实上我们可以把 \(-(1+\sum_{i=1}^np_idp_{\{i\}})\) 当作一个待定系数 \(c\) 去求解。即
作沃尔什变换,则
事实上,\([z^S]\hat P\) 是容易考虑的,不难得知 \([z^S]\hat P=\sum_{i=1}^n(-1)^{|\{i\}\cap S|}p_i=1-2\sum_{i\in S}p_i\) ,而 \(\sum_{T\in 2^U}(-1)^{|T\cap S|}=[S=\varnothing]2^n\) ,所以取 \(S=\varnothing\) ,便解得 \(c=-2^n\) 。
所以,\(S\not=\varnothing\) 时有
再考虑逆沃尔什变换,则
注意到 \([z^{\varnothing}]DP=0\) ,解得
于是
跑个简单的背包即可,状态(考虑前几个,\(|T\cap S|\) 的奇偶性,分母)代表该分母的贡献,第一维可以滚掉。注意到 \(\sum_{i=1}^np'_i\) 的值域远小于模数,所以不难证明,通分后分母不会是模数的倍数,同时直接求逆元乘到分子上和约分掉再乘结果是一样的。把 \(\sum_{i=1}^np'_i\) 内的全部数的逆元线性预处理出来本题就完成了。
\(\square\)

浙公网安备 33010602011771号