「ZJOI2019」开关
「ZJOI2019」开关
神题
前言
设 \(\text{FWT}_{\oplus}(F(x))=F'(x)\)
关于 \(\text{FWT}_{\oplus}\) 的展开式子,我发现大部分人都不晓得。。。。
\([x^S]F'(x)=\sum_T(-1)^{|S\cap T|} [x^T]F(x)\)
\(F(x)=\frac{F''(x)}{2^n}\)
详细可以看这个
定义 \(\bigoplus\) 为两个多项式的异或卷积
\(\times\) 为两个多项式对应项直接相乘
\([x^S]F(x)\) 表示 \(F(x)\) 的第 \(S\) 项的系数
正文
翻转过程是一个 \(\oplus\) 的过程,所以考虑用集合幂指数配合 \(\text{FWT}_\oplus\) 构造和求解方程
事实上问题等价于从初始状态 \(S\) 跑到 \(\empty\) 的期望次数
设从 \(S\) 到 \(\empty\) 的期望次数生成函数为 \(F(x)\) ,其中 \([x^{\empty}]F(x)=0\)
设转移函数 \(G(x),[x^{\{i\}}]G(x)=p_i\)
那么我们的方程就是 \(F(x)\bigoplus G(x)+\sum x^S+cx^{\empty}=F(x)\)
其中 \(x^S\) 表示这次转移之后答案要加一
由于直接这样转移得到的方程显然是无穷解的,因为无法保证 \([x^{\empty}]F(x)=0\)
所以我们用一个常数项 \(cx^{\empty}\) 平衡这个问题, \(c\) 现在是未知的
\(\because F(x)\bigoplus G(x)+\sum x^S+cx^{\empty}=F(x)\)
\(\therefore (F(x)\bigoplus G(x)+\sum x^S+cx^{\empty})'=F'(x)\)
\(\therefore F'(x)\times G'(x)+(\sum x^S+cx^{\empty})'=F'(x)\)
我们模拟一下 \(G'(x)\)
\([x^S]G'(x)=\sum_i(-1)^{|S\cap \{i\}|}[x^{\{i\}}]G(x)=\sum_{i\notin S}p_i-\sum_{i\in S}p_i\)
再卷一下 \((\sum x^S+cx^{\empty})'\)
\((\sum x^S)'=\sum_S\sum_T(-1)^{|S\cap T|}x^S\)
\(\because (-1)^{|S\cap T|} =\sum_{T\subset S}(-1)^|T|\cdot 2^{n-|S|}=[S=\empty]2^{n-|S|}\)
\(\therefore (\sum x^S)'=2^n x^{\empty}\)
\((cx^{\empty})'=\sum c\cdot x^S\)
然后我们带入反解 \([x^S]F'(x)\)
当 \(S=\empty\) 时,
则 \([x^S]F'(x)\cdot [x^S]G'(x)+2^n+c=[x^S]F'(x)\)
然后发现此时 \([x^S]G'(x)=1\) ,那么就意味着 \(2^n+c=0\)
解出了 \(c=-2^n\) ,但是此时我们实际上并不知道 \([x^{\empty}]F'(x)\) 的值
当 \(S\ne \empty\) 时
\([x^S]F'(x)\cdot [x^S]G'(x)+c=[x^S]F'(x)\)
\([x^S]F'(x)(1-[x^S]G'(x))=c\)
\[[x^S]F'(x)=-\frac{2^n}{1-\sum_{i\notin S}p_i+\sum_{i\in S}p_i}=-\frac{2^n}{2\sum_{i\in S}p_i}\]
我们考虑要求出 \([x^\empty]F'(x)\) 的值
由 \([x^{\empty}]F(x)=2^{-n}\cdot \sum [x^S] F'(x)=0\)
\[[x^\empty]F'(x)-\sum_{S\ne \empty}\frac{2^n}{2\sum_{i\in S}p_i}=0\]
那么我们由 \(F'(x)\) 回代得到 \([x^S]F(x)(S \ne \empty)\)
\[[x^S]F(x)=2^{-n}\cdot \sum_T(-1)^{|S\cap T|}[x^T]F'(x)\]
\[=2^{-n}([x^\empty]F'(x)+\sum_{T\ne \empty}(-1)^{|S\cap T|}[x^T]F'(x))\]
\[=\sum_{T\ne\empty}\frac{1}{2\sum_{i\in T}p_i}+2^{-n}\sum_{T\ne \empty}(-1)^{|S\cap T|}[x^T]F'(x)\]
\[=\sum_{T\ne \empty,|S\cap T|\mod 2=1} \frac{1}{\sum_{i\in T} p_i}\]
下面是一个背包,跑的同时统计一下就好了 \(|S\cap T|\) 的奇偶性就好了
然后会发现事实上并没有必要特判 \(S=\empty\) 的情况
1 |
|