一、题目
二、解法
本题就是要求所有排列的最大前缀和之和,首先考虑这样一些性质:
- 最大前缀和的每个后缀值一定 ≥ 0 \geq0 ≥0,不然可以删去得到更大的。
- 删去最大前缀的每个前缀值一定 < 0 <0 <0,不然可以添加得到更大的。
设 f [ i ] f[i] f[i]为集合 i i i满足条件 1 1 1的方案数, g [ i ] g[i] g[i]为集合 i i i满足条件 2 2 2的方案数,(这里解释一下为什么严格小于,因为有多个最大值的情况可能被算重,严格小于就会让最后一个位置的最大值从 f f f处算一次), s u m [ i ] sum[i] sum[i]为集合 i i i的权值。
考虑转移, f [ i ] f[i] f[i]可以用刷表法,在首位填上一个未出现的数 j j j