题目主要是计算组合数。 当遇到0时,我们先统计一共有多少连续的0,cnt个。 然后用提前维护的前缀最小值(除0外),后缀最大值(除0外),我们可以得到这串0的取值范围[maxa_i, mina_i]。 根据组合数学,从 n 个元素中可重复选取 m 个元素的选法数量为组合数 C (n + m - 1, m),其中 C (a, b) 表示从 a 个元素中选 b 个的组合数(计算公式:C (a, b) = a! / (b!・(a-b)! ))。 对答案更新 ans = ans * C (mina_i-maxa_i+1 + cnt - 1, cnt) #include <bits/stdc...