數學考試 字首和(尺取)

2022-05-01 07:21:12 字數 1038 閱讀 8927

今天qwb要參加乙個數學考試,這套試卷一共有n道題,每道題qwb能獲得的分數為ai,qwb並不打算把這些題全做完,

他想選總共2k道題來做,並且期望他能獲得的分數盡可能的大,他準備選2個不連續的長度為k的區間,

即[l,l+1,l+2,....,l+k-1],[r,r+1,r+2,...,r+k-1](r >= l+k)。

第一行乙個整數t(t<=10),代表有t組資料

接下來一行兩個整數n,k,(1<=n<=200,000),(1<=k,2k <= n)

接下來一行n個整數a1,a2,...,an,(-100,000<=ai<=100,000)

輸出乙個整數,qwb能獲得的最大分數
示例1

2

6 31 1 1 1 1 1

8 2-1 0 2 -1 -1 2 3 -1

6

7沉著冷靜 認真分析 這題的複雜度用o(n)就可以過了,處理一下就好

注意初始化ans的時候要足夠小,一開始一直wa這裡

1 #include2

using

namespace

std;

3const

int maxn = 1e5 + 10;4

long

long sum[2 * maxn], a[2 * maxn], pre[2 * maxn], premax[2 *maxn];

5int

main()

15 premax[0] = -999999999999;16

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

20long

long ans = -999999999999999;21

for (int i = n - k + 1 ; i >= k ; i--)

24 printf("

%lld\n

", ans);25}

26return0;

27 }

數學考試(字首和)

今天qwb要參加乙個數學考試,這套試卷一共有n道題,每道題qwb能獲得的分數為ai,qwb並不打算把這些題全做完,他想選總共2k道題來做,並且期望他能獲得的分數盡可能的大,他準備選2個不連續的長度為k的區間,即 l,l 1,l 2,l k 1 r,r 1,r 2,r k 1 r l k 第一行乙個整...

數學考試 (字首和 思維)

題目 找出數列中不連續的最大的k區間 和第二大的k區間 這樣的貪心思想是錯誤的。例如7 3 5 6 6 8 10 12 7 不連續的第一大3區間 和第二大分別為 8 10 12 和 5 6 6 這樣計算答案為47.實際上應該選 6 6 8 和 10 12 7 答案為49 以i為分界線,i的左邊包括i...

數學考試dp

來自 先是read 函式,用於快速讀入,比cin快,比printf快 int read ch getchar while ch 0 ch 9 return x f 呼叫函式的時候定義乙個新變數 比如輸入乙個t,表示測試次數 int t t read 接下來是看題幹,兩個不連續的區間 區間長度為k i...