def slv(l, r, optl, optr):
if r < l:
return
mid = (l + r) // 2
for o in range(optl, optr + 1):
if dp[mid] < dp[o] + w(o, mid):
dp[mid] = dp[o] + w(o, mid)
opt[mid] = o
slv(l, mid - 1, optl, opt[mid])
slv(mid + 1, opt[mid], optr)
如果 opt[mid] 一直靠边会不会导致复杂度出问题