题意:给定
个不同的整数,求将它们分成两个集合 ,并且 集合中任意两个数的差 , 集合中任意两个数的差 的方案数。
答案对 取模。
,时限 。
记给出的整数集合为 。
考虑如何检验一组方案是否合法。可以将
分别排序后,查看相邻元素的差值是否均 。
因此,我们将
从小到大排序得到序列 ,然后 。
设 表示已经决定 的归属,其中 放入 或 的方案数。
计算
时,枚举最后一段划给 或 。
假设要将 划给 ,则段内差值要 ,且两端外侧的差值要 。
合法的
的范围是一个区间,且左端点有单调性,可以双指针求解。转移容易用部分和计算。
复杂度 。