304 限長最大連續和

2021-09-25 06:26:59 字數 1002 閱讀 6853

給你乙個長度為 n 的整數序列 ,要求從中找出一段連續的長度不超過 m 的子串行,使得這個序列的和最大。

第一行為兩個整數 n,m;

第二行為 n 個用空格分開的整數序列,每個數的絕對值都小於100。

僅乙個整數,表示連續長度不超過 m 的最大子串行和。

641

-351

-23

7
對於 30%的資料:1<=n,m<=10,000

對於 60%的資料:1<=n,m<=1,000,000

對於100%的資料:1<=n,m<=10,000,000

維護字首和,對於每乙個字首和s[i],尋找s[i-m]~s[i-1]中最小的那個,用單調佇列維護即可

模板題請見:小雷的早餐

#include

#define m(a,b) memset(a,b,sizeof(a))

#define inf 0x3f3f3f3f

#define mod 19650827

using

namespace std;

inline

void

read

(int

&x)while

(ch>=

'0'&& ch<=

'9')

if(c==

'-')x=

-x;}

int sum[

10000005

],q[

10000005];

int head=

1,tail=1;

int n,m,i,x,ans=

-2147483647

;int

main()

for(i=

1;i<=n;i++

)printf

("%d\n"

,ans)

;return0;

}

UOJ 304 限長最大連續和

題目描述 給你乙個長度為 n 的整數序列 要求從中找出一段連續的長度不超過 m 的子串行,使得這個序列的和最大。輸入描述 第一行為兩個整數 n,m 第二行為 n 個用空格分開的整數序列,每個數的絕對值都小於100。輸出描述 僅乙個整數,表示連續長度不超過 m 的最大子串行和。樣例輸入 6 41 3 ...

限長最大連續和

給你乙個長度為 n 的整數序列 要求從中找出一段連續的長度不超過 m 的子串行,使得這個序列的和最大。第一行為兩個整數 n,m 第二行為 n 個用空格分開的整數序列,每個數的絕對值都小於100。僅乙個整數,表示連續長度不超過 m 的最大子串行和。6 4 1 3 5 1 2 37對於 30 的資料 1...

最大連續和

這個問題對我來說還挺難的,當初做dp時水過去了,但沒徹底理解,這次打算好好分析一下,爭取徹底搞懂。首先,像 1 1 2 2 3 3 4 4 5 5這樣的數列,想要找連續最大和,可以有很多種方法,從最慢的列舉o n 3 到最快的動態規劃o n 毫無疑問,我們要選擇複雜度低的演算法。所以我這裡就只分析兩...