这题首先需要一些观察力,发现题目中的一些性质。即:每个位置上的 Ai在选取数值的时候,一定选择区间的上限或者下限,也就是说要么选 Bi,要么选 1 。
上述性质很容易“脑补法”证明,不多赘述。
因此每个位置只有两种可能的选择方法,那么考虑设计状态 f[i][0/1] 表示前 i个数在最后一个数 B[i] 选最小/最大的条件下能得到的最大结果。时间复杂度 O(n)。