AGC054B Greedy Division

题意:给出序列 。用一个排列 将序列 打乱。

接下来,有两个变量 ,初始时为

逐个考虑 ,若 ,则 加上 ,否则 加上

求有多少个排列 ,使得最终 。答案对 取模。


分成两个和相同的集合 。钦定

将这两个集合内部的顺序任意打乱,然后考虑它们归并的方案数。

不难发现,由于贪心的决策是确定的,归并的方案数是唯一的。

于是,方案数为


接下来用 DP 求出划分集合的方案数。记 表示选了 个数和为 的方案数。

,则答案为:

复杂度为