题解【[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\) 的答案累加起来即可。

方向总结:尽可能研究变化较少的东西,如果有多个会变,就转化为少量会变进行研究。

posted @ 2024-05-03 23:46  2017BeiJiang  阅读(11)  评论(0编辑  收藏  举报