給你乙個長度為 n 的整數序列 ,要求從中找出一段連續的長度不超過 m 的子串行,使得這個序列的和最大。
第一行為兩個整數 n,m;
第二行為 n 個用空格分開的整數序列,每個數的絕對值都小於100。
僅乙個整數,表示連續長度不超過 m 的最大子串行和。
6 4
1 -3 5 1 -2 3
7
對於 30%的資料:1<=n,m<=10,000
對於 60%的資料:1<=n,m<=1,000,000
對於100%的資料:1<=n,m<=10,000,000
分析:
一道顯然的單調佇列題目。。。由於本題要求區間和,故不難想到本題正解qwq。
code:
1 #include 2 #include 3 #include 4 #include 5using
namespace
std;
6int n,m,a[10000005];7
long
long sum[10000005
];8 inline void qr(int &s)
16for(;c>='
0'&&c<='
9';c=getchar())
17 s=(s<<1)+(s<<3)+c-'0'
;18 s*=f;19}
20int
main()
28 q.push_back(0
);29
for(int i=1;i<=n;i++)
37 printf("
%lld\n
",ans);
38//
system("pause");
39return0;
40 }
304 限長最大連續和
給你乙個長度為 n 的整數序列 要求從中找出一段連續的長度不超過 m 的子串行,使得這個序列的和最大。第一行為兩個整數 n,m 第二行為 n 個用空格分開的整數序列,每個數的絕對值都小於100。僅乙個整數,表示連續長度不超過 m 的最大子串行和。641 351 237對於 30 的資料 1 n,m ...
UOJ 304 限長最大連續和
題目描述 給你乙個長度為 n 的整數序列 要求從中找出一段連續的長度不超過 m 的子串行,使得這個序列的和最大。輸入描述 第一行為兩個整數 n,m 第二行為 n 個用空格分開的整數序列,每個數的絕對值都小於100。輸出描述 僅乙個整數,表示連續長度不超過 m 的最大子串行和。樣例輸入 6 41 3 ...
最大連續和
這個問題對我來說還挺難的,當初做dp時水過去了,但沒徹底理解,這次打算好好分析一下,爭取徹底搞懂。首先,像 1 1 2 2 3 3 4 4 5 5這樣的數列,想要找連續最大和,可以有很多種方法,從最慢的列舉o n 3 到最快的動態規劃o n 毫無疑問,我們要選擇複雜度低的演算法。所以我這裡就只分析兩...