數學考試 (字首和 思維)

2021-10-07 17:20:48 字數 1281 閱讀 7161

題目

找出數列中不連續的最大的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的最大k區間加上i的右邊不包括i的k區間,迴圈不斷更新最大值

#include

using

namespace std;

const

int maxn =

2e5+9;

typedef

long

long ll;

ll a[maxn]

;int

main()

ll max =

-1e18

; ll ans =

-1e18

;for

(int i=k;i+k<=n;i++

) cout<}return0;

}

以i為分界線,乙個迴圈left[i]記錄i左邊的最大k區間,再乙個迴圈right[i]記錄i右邊的最大k區間。再乙個迴圈left[i]+right[i]更新最大值

#include

using

namespace std;

const

int maxn =

2e5+9;

typedef

long

long ll;

ll a[maxn]

;ll left[maxn]

;ll right[maxn]

;int

main()

left[k]

= a[k]

- a[0]

; right[n-k]

= a[n]

- a[n-k]

;for

(int i=k+

1;i+k<=n;i++

)for

(int i=n-k-

1;i>=

1;i--

) ll ans =

-1e18

;for

(int i=k;i+k<=n;i++

) cout<}return0;

}

數學考試(字首和)

今天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 第一行乙個整...

數學考試 字首和(尺取)

今天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 第一行乙個整...

數學考試dp

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