兩段不相鄰子段和之和最大

2022-09-17 02:24:14 字數 718 閱讀 5580

頭條一面第二次gg,肚子不疼了,人蠢了。

題目:給乙個陣列,求出兩段 不相鄰也不相交的子段和 之和 最大。

如果是單段,那麼就是乙個普通的最大子段和問題。

然而分成了兩段,也是簡單的一批

兩次遍歷求出從字首和字尾的最大子段和,即1到n每個位置的最大子段和,以及n到1每個位置的最大子段和,這樣就可以分區間考慮了。

最後一次,遍歷列舉整個陣列,求第i位為區間間隔的l【i-1】+r【i+1】的最大值。

#include

using namespace std;

const

int maxn=

1e5+7;

int l[maxn]

,a[maxn]

,r[maxn]

,n;int

main()

sum=

0,tmp=

-99999999

;for

(int i=n-

1;i>=0;

--i)

int ans=

-9999999

;for

(int i=

1;i++i) ans=

max(ans,l[i-1]

+r[i+1]

);printf

("%d\n"

,ans)

;}

環狀兩段最大子段和

首先考慮鏈狀的情況,也就是鏈狀 p.s 表示使用的子段 可以考慮用中途相遇法,用 g i 表示以 ii 為結尾分界線,之前最大子段和,以 h i 表示以 ii 為結尾分界線,之後最大子段和 那麼答案也就是 g i h i 1 不相交,所以要 1 如果是環狀的呢?俗話說得好正難則反,雖然不知道三段的怎...

最大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...