NYOJ 742 最大m段和 區間DP

2021-07-11 21:47:06 字數 731 閱讀 6556

經典區間dp:最大m段和

「最大連續和問題」是最大m段和問題的乙個特例,其實是當m=1的一種特殊情況。

oj題目:

#include 

#include

#define inf 0x3f3f3f3f

using

namespace

std;

const

int maxn = 1000000 + 5

;typedef

long

long

ll;int

a[maxn];

ll dp[maxn];

ll maxn[maxn];

/*dp[i][j] = max(dp[i][j-1]+a[j], max(dp[i-1][k])+a[j]) (i-1 <= k < j)

下面的**進行了兩個很重要的優化:1.滾動陣列,空間減少一維 2. 通過動態維護上一行中[i-1,j)的最大值,省去k的一重迴圈

*/int

main ()

for(int j=0; j<=n; j++) maxn[j] = dp[j] = 0

;

ll t;

for(int i=1; i<=m; i++) }}

printf(

"%lld\n

", t);

}return0;

}

參考:

NYOJ 742 (多段子串和)

題目 給你乙個序列 s1,s2,s3,s4 sx,sn 1 x n 1,000,000,32768 sx 32767 我們定義 sum i,j si sj 1 i j n 現在給你乙個 m 8 m 0 m sum i1,j1 sum i2,j2 sum i3,j3 sum im,jm 我們規定他是不...

最大m子段和

最大m子段和問題 給定由n個整數 可能為負 組成的序列a1 a2 a3.an,以及乙個正整數m,要求確定序列的m個不想交子段,使這m個子段的總和最大!設b i,j 表示陣列a的前j項中i個子段和的最大值,並且第i個子段包含a j 1 i m,i j n 則所求的最優值為maxb m,j m j n ...

最大m子段和

51nod 1052 題意描述 給定陣列a,長度為n。給定整數m,求不相交的m段字段和的最大值。當m 1 時 該問題就是最大子段和問題。設dp i 為以a i 結尾的最大子段和,當我們考慮dp i 的時候如果dp i 1 0那麼肯定把a i 接在後面最優,否則,取a i 最優。得到 dp i max...