CF1097F Alex and a TV Show

Sol

思路挺曲折的。

以下所有公式均表示模 \(2\) 意义下的答案。

假设 \(s_i\) 表示集合 \(s\)\(i\) 的出现次数对 \(2\) 取模的余数。

如果没有 \(3\) 操作直接 bitset 就可以了。

\(V\) 表示值域上限。考虑 \(3\) 操作如何表示,假设三个集合 \(x,y,z\) 满足 \(x\times y=z\),那么 \(z_t=\displaystyle\sum_{i=1}^{V}\sum_{j=1}^{V}[\gcd(i,j)=t]a_ib_j=\sum_{i=1}^{\left\lfloor \frac{V}{t}\right\rfloor}\sum_{j=1}^{\left\lfloor \frac{V}{t}\right\rfloor}[\gcd(i,j)=1]a_{it}b_{jt}\)

根据 \([x=1]=\displaystyle\sum_{d|x}\mu(d)\),可以得到 \(z_t=\displaystyle\sum_{i=1}^{\left\lfloor \frac{V}{t}\right\rfloor}\sum_{j=1}^{\left\lfloor \frac{V}{t}\right\rfloor}x_{it}y_{jt}\sum_{d|i\land d|j}\mu (d)=\sum_{d=1}^{V}\mu(d)\sum_{i=1}^{\left\lfloor \frac{V}{td}\right\rfloor}\sum_{j=1}^{\left\lfloor \frac{V}{td}\right\rfloor}x_{itd}y_{jtd}\)

然后发现还是很难做,令 \(g_{s,t}=\displaystyle\sum_{i=1}^{\left\lfloor \frac{V}{t}\right\rfloor}s_{it}\),那么:

\[z_t=\displaystyle\sum_{d=1}^{\left\lfloor \frac{V}{t}\right\rfloor}\mu(d)g_{x,td}g_{y,td} \]

\[\begin{aligned}g_{z,t}=&\displaystyle\sum_{i=1}^{\left\lfloor \frac{V}{t}\right\rfloor}z_{it}\newline=&\displaystyle\sum_{i=1}^{\left\lfloor \frac{V}{t}\right\rfloor}\sum_{d=1}^{\left\lfloor \frac{V}{it}\right\rfloor}\mu(d)g_{x,itd}g_{y,itd}\newline=&\sum_{i=1}^{\left\lfloor \frac{V}{t}\right\rfloor}g_{x,it}g_{y,it}\sum_{d|i}\mu(d)\newline=&\sum_{i=1}^{\left\lfloor \frac{V}{t}\right\rfloor}g_{x,it}g_{y,it}[i=1]\newline=&g_{x,i}g_{y,i}\end{aligned} \]

也就是对应位置相乘,等价于 bitset 的与操作。

最后根据莫反可以得到 \(z_t=\displaystyle\sum_{i=1}^{\left\lfloor \frac{V}{t}\right\rfloor}\mu(i)g_{z,it}\),注意到我们只关心模 \(2\) 的答案,所以 \(z_t=\displaystyle\sum_{i=1}^{\left\lfloor \frac{V}{t}\right\rfloor}|\mu(i)|g_{z,it}\),令 \(tmp_{it}\gets \mu(i)\),那么 \(z_t=\displaystyle\sum_{i=1}^{V}tmp_{i}g_{z,i}\),仍然可以用 bitset 来做。

时间复杂度:\(O(\dfrac{V\log V}{\omega}+\dfrac{nV}{\omega})\),其中 \(V\) 是值域上限,\(\omega=32\)

如果公式有误请私信我。/kel

Code

Link

posted @ 2025-11-24 23:07  incra  阅读(5)  评论(0)    收藏  举报