题解【[ABC147F] Sum Difference】
下为口胡题解:
入手方向推导:
直接考虑题目所给式子显然困难:
\[w(S)=\sum_{i\in S}A_i-\sum_{i\notin S}A_i
\]
因为两个式子虽然相关但是都在变化,不妨转化为:
\[w(S)=2\times \sum_{i\in S}A_i-\sum_{i=1}^n A_i
\]
这样只用求出有多少个不同的 \(\sum_{i\in S}A_i\)。
由于每个 \(A_i\) 加和一定可以表示为 \(aX+bD\) 的形式,不妨将 \(a\) 固定下来进行研究(即选取固定数量的 \(A_i\),那么贡献固定数量的首项 \(X\))。
当 \(a\) 确定,\(\sum_{i\in S}A_i\) 显然可以取到 \([aX+\frac{a(a-1)}{2}D,aX+\frac{a(2n-a-1)}{2}D]\) 之间的每一个数。
比如对于如下的 \(A_i\) 取三个:
X X+D X+2D X+3D X+4D X+5D
最小可以取到:\(X+(X+D)+(X+2D)=3X+3D\),最多可以取到 \((X+3D)+(X+4D)+(X+5D)=3X+12D\),其中每一个 \(b\) (\(D\)前的系数)不同的都能取到。
但是还有一种情况,即存在 \(k_1X=k_2D\),那么在某些情况下,即便有两个 \(aX+bD\) 的 \(a,b\) 系数均不相同,也能表示同一个值。
这种情况可以尽可能将刚才计算出的区间中的 \(X\) 尽可能替换为 \(D\)。
最后在相同的 \(X\) 上区间并,并将不同 \(X\) 的答案累加起来即可。
方向总结:尽可能研究变化较少的东西,如果有多个会变,就转化为少量会变进行研究。