摘要:
本题通过将原数列转化为差分数组 $\{c_i\}$ ,并推导得出 $\sum_{k = 1}^n \frac{k(k + 1)}{2} c_k = M$。构建生成函数 $[x^M] F(x)=\prod_{k = 1}^{\min(n,\sqrt{M})} \frac{1}{1 - x^{\frac{k(k + 1)}{2}}}$,利用递推式子 $f_{n,i}=f_{n - 1,i}+f_{n,i - t}$ 以$O(M\sqrt{M})$ 时间复杂度求解。对于凸壳斜率正负都存在的情况,枚举凸壳最低点 $p$ 将数列分左右部计算,通过类似递推处理 $p$ 移动情况并避免重复计算,同时考虑原凸壳二阶导数非负,枚举上移量并将相关项系数加入答案。 阅读全文