[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\) 的余数分类,只有同一类中的可能重合。
接下来直接做区间并就好了。
本文来自博客园,作者:CuteNess,转载请注明原文链接:https://www.cnblogs.com/CuteNess/p/18718972
                    
                
                
            
        
浙公网安备 33010602011771号