其他分享
首页 > 其他分享> > CF1436F Sum Over Subsets

CF1436F Sum Over Subsets

作者:互联网

更好的阅读体验

题意

给出一个可重集 \(S\),值为 \(i\) 的元素有 \(freq_i\) 个
有两个集合 \(A,B\) 满足

称这两个集合的权值 \(w(A,B)=\sum\limits_{x\in A}x\sum\limits_{y\in B}y\)
求所有可能的集合对 \((A, B)\) 的权值之和

\(1\le a_i\le10^5,freq_i\le10^9\)

题解

\(\gcd_{x\in A}x=1\) 是一个棘手的条件

考虑令 \(f_i\) 表示满足 \(\gcd_{x\in A}x=i\) 时的答案,\(g_i\) 表示满足 \(i\mid\gcd_{x\in A}x\) 时的答案
有 \(g_i=\sum\limits_{i\mid j}f_j\)
求出 \(g\) 以后,可以莫比乌斯反演得到 \(f\)
即 \(f_i=\sum\limits_{j\mid i}\mu(j)\times g_j\)

所以答案 \(\text{Ans}=\sum\limits_{1\le i}\mu(i)\times g_i\)

接下来考虑求 \(g_i\)

先构造集合 \(S'=\{x|x\in S,i\mid x\}\)

\[\begin{align*} g_i&=\sum_{B\subset A\subseteq S',|B|=|A|-1}w(A,B)\\ &=\sum_{B\subset A\subseteq S',|B|=|A|-1}\sum_{x\in A}\sum_{y\in B}x\times y \end{align*} \]

我们考虑每一对 \((x\in A, y\in B)\) 对 \(g_i\) 的贡献

称在集合 \(A\) 中但不再集合 \(B\) 中的元素为特殊元素,在集合 \(A\) 和 \(B\) 中的为普通元素
分两种情况讨论:

回到本题,我们把值相同的元素放在一起考虑
相同值 \(x\) 之间的贡献有两种

不同的值 \(x, y\) 之间的贡献
类似的 \([(|S'|-2)\times 2^{|S'|-3}+s^{|S'|-2}]\times x\times y\times freq_x\times freq_y\)

直接求 \(\sum\limits_{x,y\in S',x\not =y}[(|S'|-2)\times 2^{|S'|-3}+s^{|S'|-2}]\times x\times y\times freq_x\times freq_y\) 显然时间上不能接受

稍稍转化一下

\[\begin{align*} &\sum_{x,y\in S',x\not =y}[(|S'|-2)\times 2^{|S'|-3}+s^{|S'|-2}]\times x\times y\times freq_x\times freq_y\\ =&[(|S'|-2)\times 2^{|S'|-3}+s^{|S'|-2}]\sum_{x,y\in S',x\not =y}x\times freq_x\times y\times freq_y\\ =&[(|S'|-2)\times 2^{|S'|-3}+s^{|S'|-2}][(\sum_{x\in S'}x\times freq_x)^2-\sum_{x\in S'}(x\times freq_x)^2] \end{align*}\]

至此我们的到了一个调和级数时间复杂度的算法,即 \(\Theta(n\log n)\)

细节

计算 \(|S'|\) 时不要直接模 \(998244353\),因为它要放在指数上

代码 codeforces submission 144913462

标签:limits,sum,元素,CF1436F,times,Over,freq,贡献,Sum
来源: https://www.cnblogs.com/gzezfisher/p/15860588.html