51nod1049(最大子段和 )

2022-02-20 01:47:07 字數 742 閱讀 8943

題意:中文題誒~

思路:本題和51nod1049(題解)類似,不同的是本題的數列是乙個環;

我們可以這樣想,取得最大和的子段有兩種情況:

1.從第i個元素到第j個元素,i<=j; 

2.從第i個元素到第j個元素,i>j;

第1種情況和1049那題是一樣的;

第2種情況我們可以反過來想,所有元素的總和是固定的,若 i~j 能取到最大值,那麼 j~i 的和為最小子段和,我們可以用和 1 中類似的方法求出最小子段和,再用所有元素的和減去它就能得到最大值啦;

兩種情況取得的最大值中較大著即為答案;

**:

1 #include 2

#define ll long long

3using

namespace

std;45

const

int maxn=1e5+10;6

ll a[maxn], b[maxn], c[maxn];78

ll min(ll a, ll b)

1112

ll max(ll a, ll b)

1516

int main(void

)else

29if(ans36 cout <37for(int i=1; i<=n; i++)

41 ans=ans-num;

42 cout << (ans>cnt?ans:cnt) <43return0;

44 }

51Nod 1049 最大子段和

n個整數組成的序列a 1 a 2 a 3 a n 求該序列如a i a i 1 a j 的連續子段和的最大值。當所給的整數均為負數時和為0。例如 2,11,4,13,5,2,和最大的子段為 11,4,13。和為20。input 第1行 整數序列的長度n 2 n 50000 第2 n 1行 n個整數 ...

51nod 1049 最大子段和

1049 最大子段和 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 n個整數組成的序列a 1 a 2 a 3 a n 求該序列如a i a i 1 a j 的連續子段和的最大值。當所給的整數均為負數時和為0。例如 2,11,4,13,5,2,和最大的子段為 11,4,1...

51Nod 1049 最大子段和

1049 最大子段和 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 n個整數組成的序列a 1 a 2 a 3 a n 求該序列如a i a i 1 a j 的連續子段和的最大值。當所給的整數均為負數時和為0。例如 2,11,4,13,5,2,和最大的子段為 11,4,1...