[ABC147F] Sum Difference

给一个首项为 \(X\),公差为 \(D\),项数为 \(n\) 的等差数列 \(A\),定义

\[w(S)=\sum_{i\in S}A_i - \sum_{i\notin S} A_i \]

求对于所有 \(S\)\(\{1,2,\cdots,n\}\) 的子集,不同的 \(w(S)\) 的数量。


推一下柿子,变成

\[w(S)=C+X|S|+D\sum_{i\in S}i \]

其中 \(C\) 是一个固定的常数,\(|S|\) 表示集合的大小。

枚举集合大小,\(\sum_{i\in S}i\) 是连续的一段

\(X|S| \bmod D\) 的余数分类,只有同一类中的可能重合。

接下来直接做区间并就好了。

posted @ 2025-02-17 07:28  CuteNess  阅读(13)  评论(0)    收藏  举报