1050 迴圈陣列最大子段和

2022-02-18 01:53:34 字數 866 閱讀 2268

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。和為20。

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

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

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

6

-211

-413

-5-2

20

先求不迴圈的最大值,

然後求不迴圈的最小值.

然後比較最終結果

1 #include 2

#define ll long long

3using

namespace

std;45

intn;

6 ll an[50005];7

8ll max(ll an)else

17 m =max(m, sum);18}

19return

m;20}21

22int

main()

29 ll ans =max(an);

30for(int i = 0; i < n; i++)

33 ll cnt =max(an);

34 cout35return0;

36 }

1050 迴圈陣列最大子段和

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

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

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

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

51nod 1050 迴圈陣列最大子段和 最大子段和的公升級版,有乙個可以迴圈的子段,也就是首尾可以相連,如果首尾相連,那麼中間空出來的一段就是應該是最小字段和。那麼答案應該是從原版得出的值和首尾相接得出的值取最大的即可。include include include include include...