排序加树状数组优化动态规划题。
我们先存下每个组合中数值比当前组合前面的最大值还大的所有数值,存在动态数组里。
我们按照 $n$ 动态数组最后的元素排序进行处理(动态数组中最后的元素即一个组合中最大的元素)——假设前面比后面大,那后面的贡献就只能为 $0$ 了。
至于处理,我们可以由前面任意位置转移而来,转移的话可以枚举从当前动态数组那个点开始有贡献,即前面的最大数必须小于当前的枚举的位置。
时间复杂度是线性再带一个 $\log$ 级别的。
代码。