一次性取走一个区间所需的代价与且只与这个区间的最大值和最小值相关,所以不妨增设 g[l][r][\mathrm{mn}][\mathrm{mx}] 表示区间 [l,r] 取到剩余数最小值为 \mathrm{mn},最大值为 \mathrm{mx} 所需的最小代价。可知这样 f 的转移即为:
f[l][r] = \min_{1 \le \mathrm{mn} \le \mathrm{mx} \le L}\{g[l][r][\mathrm{mn}][\mathrm{mx}] + A + B \cdot (\mathrm{mx} - \mathrm{mn})^2\}
这里 L 为最大可能的分数值。
接下来就该考虑 g 怎么转移了。g[l][r][\mathrm{mn}][\mathrm{mx}] 的意义是区间 [l,r] 被取走一些数,还剩下一些数,且这些数里最小值为 \mathrm{mn},最大值为 \mathrm{mx}。那剩下这些数的情况,就可以划分成 \boldsymbol r 位置的数在这些数里(即 r 位置的数没有被取走) 和 \boldsymbol r 位置的数不在这些数里(即 r 位置的数被取走)这两种情况。