AGC009C Division into Two

题意:给定 个不同的整数,求将它们分成两个集合 ,并且 集合中任意两个数的差 集合中任意两个数的差 的方案数。

答案对 取模。

,时限


记给出的整数集合为

考虑如何检验一组方案是否合法。可以将 分别排序后,查看相邻元素的差值是否均

因此,我们将 从小到大排序得到序列 ,然后

表示已经决定 的归属,其中 放入 的方案数。

计算 时,枚举最后一段划给

假设要将 划给 ,则段内差值要 ,且两端外侧的差值要

合法的 的范围是一个区间,且左端点有单调性,可以双指针求解。转移容易用部分和计算。

复杂度