ZJOI2019 开关
给定长度为 (n) 的序列 (s),每个点被选择的概率为 (frac{p_i}{sum p_i}),对于全 (0) 序列,每次操作为翻转一个值,求期望操作多少次可以得到目标序列。
(nle 100,sum p_ile 5cdot 10^4)
(
m Sol:)
似乎有 OGF 的推导方法和集合幂级数的推导方法。
神仙题。
集合幂级数
我们先考虑一个高斯消元:
[f_i=1+sum_{Toplus j=i}f_jcdot 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)+ccdot x^{|varnothing|}
]
最后一项表示消去 (x^{varnothing}) 的系数。
那么考虑 FWTxor 的结果,对于集合 (u),其结果为:
[mathscr{F(x)_{u}= extrm{FWT}(sum_{i} x^i)+G(x)cdot F(x)+ extrm{FWT}(ccdot x^{|varnothing|})}
]
对于 (
m xorFWT),我们知道 ( extrm{FWT}(ccdot x^{|varnothing|})_k=c),同时我们进行移位得到:
[mathscr{F(x)_u(1-G(x))}=sum_{k} (-1)^{uland k}+c
]
当 (u=0) 时,我们有 ( extrm{FWT}(G(x))=sum_k p_icdot (-1)^{kland 0}=sum_k p_k=1)
所以我们有:
[0=2^n+c o c=-2^n
]
所以我们得到,对于 (k
e 0),有:
[ extrm{FWT}( F(x))=frac{sum_k (-1)^{uland k}-2^n}{1- extrm{FWT}(G(x))} o frac{-2^n}{1- extrm{FWT}(G(x))}
]
对于 (k=0),有:
[ extrm{FWT}(F(x))_0=sum F(x)_k
]
[ extrm{FWT}(F(x))_0=sum extrm{IFWT}( extrm{FWT}(x))_k
]
注意到 (F(x)_{0}=0),所以我们有:
[ extrm{FWT}(F(x))_0=sum_{k
e 0} sum_j frac{1}{}
]
[ extrm{FWT}(F(x))_0=sum_{k
e 0} frac{2^n}{1- extrm{ FWT}(G(x))}
]
我们所求的答案即为 (f_{S}) 即:
[egin{aligned}
&frac{1}{2^n}sum extrm{FWT}(F(x))_ucdot (-1)^{uland S}
\
&=frac{1}{2^n}igg(sum_{u
e 0} frac{-2^n}{1- extrm{FWT}(G(x))_u}cdot (-1)^{uland S}+sum_{u
e 0}frac{2^n}{1- extrm{FWT}(G(x))}igg)
\&=sum_{u
e 0}frac{1}{1- extrm{FWT}(G(x))_u}cdot (1-(-1)^{uland S})
\&=2sum_{u
e 0}frac{1}{1- extrm{FWT}(G(x))_u}[|uland S|mod 2=1]
end{aligned}]
另一边,我们注意到 ( extrm{FWT}(G(x))=sum (-1)^{kland S}p_i)
注意到 (sum p_i=1),所以我们有 ( extrm{FWT}(G(x))=sum (-1)^{kland S}p_k=sum_{k
ot in S} p_k-sum_{k in S}p_i=1-2sum_{kin S} p_k),于是可以得到答案为:
[2sum_{u
e 0}frac{1}{2sum_{k in u} p_k}[|uland S|mod 2=1]
]
[sum_{u
e 0}frac{1}{sum_{k in u} p_k}[|uland S|mod 2=1]
]
可以 (mathcal O(2^n)) 处理,注意到值域较小,可以考虑进行 01 背包的 dp,复杂度为 (mathcal O(sum pcdot n))