最大連續和 變種版

2021-05-23 02:48:10 字數 751 閱讀 1019

problem f:最大和子串行

time limit:1000ms  memory limit:65536k

total submit:21 accepted:5

description

給乙個整數陣列a=, 將這個陣列首尾相接連成乙個環狀,它的乙個子串行是指這個陣列連續的一段,比如a2,a3…ak,或者an,a1…ai。請從這個環上選取兩個不重疊的非空子序列,使這兩個子串行中的所有數字之和最大。

在三個樣例中分別選取的子串行是:

樣例一:

樣例二:

樣例三:

input

輸入的第一行包含乙個正整數t(1<=t<=40),表示有t組測試資料。

接下來每個測試資料報含兩行,第一行是乙個正整數n(2<=n<=50000), 第二行是用空格隔開的陣列a的n個數,依次為a1,a2,…an (|ai|<=10000)。

output

每組資料輸出一行,包含乙個數,即所求的這兩個子串行的元素之和。

sample input

3

31 -1 0

41 -1 1 -1

51 -1 1 -1 1

sample output

1

23

最大連續和

這個問題對我來說還挺難的,當初做dp時水過去了,但沒徹底理解,這次打算好好分析一下,爭取徹底搞懂。首先,像 1 1 2 2 3 3 4 4 5 5這樣的數列,想要找連續最大和,可以有很多種方法,從最慢的列舉o n 3 到最快的動態規劃o n 毫無疑問,我們要選擇複雜度低的演算法。所以我這裡就只分析兩...

最大連續和

求陣列中數的最大連續和,如 1,1,1,1,1 最大連續和為3 一 動態規劃 當我們從頭到尾遍歷這個陣列的時候,對於陣列裡的乙個整數,它有幾種選擇呢?它只有兩種選擇 1 加入之前的subarray 2.自己另起乙個subarray。那什麼時候會出現這兩種情況呢?設狀態為f j 表示以s j 結尾的最...

最大連續和

給出乙個長度為n的序列a1,a2,an,求最大連續和 使用列舉 時間複雜度o n 3 best a 1 初始最大值 for int i 1 i n i 設si a1 a2 ai,則ai ai 1 aj sj si 1 連續子串行的和等於兩個字首之差 時間複雜度o n 2 s 0 0 for int ...