$Description$
给定一个值$x$,一个长度为$n$的数组$a$,你可以选择一段区间,让这段区间每个数都乘上$x$,求最大连续子段和
$Solution:$
三个数组,$f_{i}$表示以$i$结尾的最大子段和,$g_{i}$表示选定区间还未完结($a_{i}$乘上$x$)的最大子段和,$h_{i}$表示已经选定区间已经在$1$~$(i-1)$中一处结尾$(a_{i}$不乘$x)$
$f_{i}=max(f_{i-1},0)+a_{i}$
$g_{i}=max(g_{i-1},f_{i-1},0)+a_{i}\times x$
$h_{i}=max(h_{i-1},g_{i-1},0)+a_{i}$
$ans=max(h_{i},g_{i})$
$Code$
1 |
|