迴圈陣列最大子段和(DP)

2021-07-12 00:21:26 字數 801 閱讀 3928

輸入

第1行:整數序列的長度n(2 <= n <= 50000)

第2 - n+1行:n個整數 (-10^9 <= s[i] <= 10^9)

輸出輸出迴圈陣列的最大子段和。

輸入示例

6 -2

11 -4

13 -5

-2輸出示例

分析:

(1)笨方法,我們可以用普通最大子段和的方法解決這個問題。我們從每個位置「斷開」環,然後按普通的最大子段和的方法去做。這樣做的複雜度是o(n^2)。

(2)巧妙點的方法,最優解 = max(普通的最大子段和, 總和 – 普通的「最小子段和」)

#include 

#include

#include

using

namespace

std;

typedef

long

long ll;

const ll inf = 0x3f3f3f3f3f3f3f3f;

const

int size = 50000 + 10;

int arr[size], n;

ll sum = 0, dp[size];

int main()

ll ans = -inf;

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

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

printf("%lld\n", ans);

return

0;}

迴圈陣列最大子段和 dp

n個整數組成的迴圈序列a11,a22,a33,ann,求該序列如aii ai 1i 1 ajj的連續的子段和的最大值 迴圈序列是指n個數圍成乙個圈,因此需要考慮an 1n 1,ann,a11,a22這樣的序列 當所給的整數均為負數時和為0。例如 2,11,4,13,5,2,和最大的子段為 11,4,...

51nod 迴圈陣列最大子段和 dp

n個整數組成的迴圈序列a 1 a 2 a 3 a n 求該序列如a i a i 1 a j 的連續的子段和的最大值 迴圈序列是指n個數圍成乙個圈,因此需要考慮a n 1 a n a 1 a 2 這樣的序列 當所給的整數均為負數時和為0。例如 2,11,4,13,5,2,和最大的子段為 11,4,13...

hpuoj 迴圈陣列最大子段和

時間限制 1 sec 記憶體限制 128 mb 提交 19 解決 6 狀態kaca在做了最大子段和問題之後,思考若陣列可以首尾相接的話最大子段和應該是多少。有多組測試資料。每一組的第一行是乙個整數n n。下面一行是n n個以空格分開的整數a i ai。1 n 10000 1 n 10000 0 ai...