d p [ i ] dp[i] dp[i]表示前i个数字的最大和,k种转移。
d p [ i ] = m a x { d p [ i − 1 ] + 1 ∗ m a x { a r r [ i ] } d p [ i − 2 ] + 2 ∗ m a x { a r r [ i ] , a r r [ i − 1 ] } . . . k ∗ d p [ i − k ] + m a x { a r r [ i ] , a r r [ i − 1 ] , . . . a r r [ i − k + 1 ] } } \begin{equation} \begin{aligned} dp[i] = max\{ \\ & dp[i - 1] + 1 * max \{ arr[i]\}\\ &dp[i - 2] + 2 * max \{arr[i], arr[i - 1]\} \\& ... \\ &k * dp[i - k] + max \{arr[i], arr[i - 1], ... arr[i - k + 1] \} \\ \} \end{aligned} \end{equation} dp[i]=max{
}dp[i−1]+1∗max{
arr[i]}dp[i−2]+2∗max{
arr[i],arr[i−1]}...k∗dp[i−k]+max{
arr[i],arr[i−1],...arr[i−k+1]}
d p [ i ] = m a x ( d p [ i − j ] + j ∗ m a x ( a r r [ i ] . . . a r r [ i − j + 1 ] ) ) = m a x { d p [ i − j ] + j ∗ m a x { a r r [ t ] } } j ∈ [ 1 , m i n ( k , i ) ] , t ∈ [ i − j + 1 , i ] \begin{equation} \begin{aligned} dp[i] &= max(dp[i - j] + j * max(arr[i]... arr[i - j + 1])) \\ & =max\{dp[i - j] + j * max\{arr[t]\}\} \\ & j \in[1, min(k, i)],t\in[i-j + 1, i] \end{aligned} \end{equation} dp[i]=max(dp[i−j]+j∗max(arr[i]...arr[i−j+1]))=max{
dp[i−j]+j∗max{
arr[t]}}j∈[1,min(k,i)],t∈[i−j+1,i]