51nod 1049 最大欄位和

2021-08-22 19:44:34 字數 896 閱讀 6465

n個整數組成的序列a11,a22,a33,…,ann, 求該序列如aii+ai+1i+1+…+ajj的連續子段和的最大值。當所給的整數均為負數時和為0。

例如:-2,11,-4,13,-5,-2,和最大的子段為:11,-4,13。和為20。

input

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

第2 - n + 1行:n個整數(-10^9 <= aii <= 10^9)

output

輸出最大子段和。

sample input

6

-211

-413

-5-2

sample output

20
dp[ i ] :以a[ i ]結尾的子段和:

dp[ i ] = max( a[ i ],dp[ i -1 ]+a[ i ] ) ;

假如dp[ i-1 ]是負數 ,a[ i] 加上dp[ i- 1 ] 肯定要減小,那這時候就捨棄這個小值,從 a[ i ]開始計算下乙個子段;

假如dp[ i-1 ]是正數,dp[i-1] 就 追加上a[i];

#include#includeusing namespace std;

typedef long long ll;

ll dp[55000];

ll a[55000];

int main()

ll max=-11000;

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

if(max>=0) cout

return 0;

}

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。第1行 整數序列的長度n 2 n 50000 第2 n 1行 n個整數 10 9 a...

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