> 文章列表 > 分割数组以得最大和的题解

分割数组以得最大和的题解

分割数组以得最大和的题解

分隔数组以得到最大和

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[i1]+1max{arr[i]}dp[i2]+2max{arr[i],arr[i1]}...kdp[ik]+max{arr[i],arr[i1],...arr[ik+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[ij]+jmax(arr[i]...arr[ij+1]))=max{dp[ij]+jmax{arr[t]}}j[1,min(k,i)],t[ij+1,i]