HDU ACM 1024 最大子串行和

2021-06-26 23:53:26 字數 737 閱讀 1566

2維表table[i][j] 表示將序列a1,a2,a3,...中的包含aj在內的j 個數分成i段,能得到的最大值。

so, table[i][j] = table[i][j-1] + aj  , 表示aj 與aj-1 同屬同一段。

若aj與aj-1不再同一段, 則 table[i][j] = max(table[i-1][k]) + aj , (i-1<=k求table第i行只需要用第i-1行,所以用動態陣列來節省空間。

#includeusing namespace std;

const int m = 1000000;

long tmp[2][m];

int a[m];

inline long max(long &a ,long &b)

int main()

for(int i = n-m; i < n ; i ++)

for(int i = 0 ; i < m ;i++) // i=0 的時候表示的是分1塊的情況。

else

for(int j = i + 1 ; j <= n-m+i ; j++)

t = 1 - t;

}t = 1 - t;

res = -32768*m;

for(int i = m-1 ; i < n ; i ++)

cout << res << endl;

}return 0;

}

HDU 1024 新最大子串行和 DP

題意是要在一段數列中求 m 段互不重合的子數列的最大和。動態規劃,用陣列 num 儲存所給數列,建二維陣列 dp dp i j 表示當選擇了第 j 個數字 num j 時,前 j 個數字被分成 i 組的所得最大和。那麼這個最大和等於 max 即 dp i j max dp i j 1 dp i 1 ...

最大子串行

模板 int maxsubsequence const int a,int n return maxsum 複雜度on 給定k個整數的序列,其任意連續子串行可表示為,其中 1 i j k。最大連續子串行是所有連續子串行中元素和最大的乙個,例如給定序列,其最大連續子串行為,最大和 為20。在今年的資料...

最大子串行

最大子串行是要找出由數組成的一維陣列中和最大的連續子串行。比如的最大子串行就是 它的和是8,達到最大 而 的最大子串行是,它的和是6。你已經看出來了,找最大子串行的方法很簡單,只要前i項的和還沒有小於0那麼子串行就一直向後擴充套件,否則丟棄之前的子串行開始新的子串行,同時我們要記下各個子串行的和,最...