ContestHunter 1201 最大子序和

2022-08-14 18:39:15 字數 802 閱讀 6648

描述

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

例如 1,-3,5,1,-2,3

當m=4時,s=5+1-2+3=7

當m=2或m=3時,s=5+1=6

輸入格式

第一行兩個數n,m(n,m<=300000)

第二行有n個數,要求在n個數找到最大子序和

輸出格式

乙個數,數出他們的最大子序和

樣例輸入

6 4

1 -3 5 1 -2 3

樣例輸出
7

這題是單調佇列的典型題。首先可以把區間和問題轉換為兩個字首和相減的問題。樸素演算法就是列舉左右端點,但演算法複雜度為o(n^2),這道題顯然是過不了的。

所以我們可以只列舉右端點i,當i固定時,找乙個左端點j,其中j屬於[i-m,i-1]並且sum[j]最小。

不妨比較一下任意兩個位置j和k,如果k=sum[j],那麼對所以大於等於i的右端點來說,k都不會是乙個好選擇,直接移除佇列比較好。

**如下

#includeusing

namespace

std;

int a[300005],q[300005],sum[300005

];int

main()

int l=1,r=1,ans=-99999999;q[

1]=0

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

cout

return0;

}

開關問題 Contest Hunter 0201

題目給了t個5 5的01矩陣,你可以將該矩陣中任意位置的數0變1,1變0,在你改變該位置的數時,它的上下左右四個位置的數也會同時發生改變。問你能否6步及以內將該矩陣變為全1矩陣,如果能輸出最少步數,否則輸出 1。這道題一看好像毫無思路,但是你仔細想一想,會發現每個點最多被修改一次,不然就不優了。並且...

Contest Hunter 1401 兔子與兔子

描述 很久很久以前,森林裡住著一群兔子。有一天,兔子們想要研究自己的 dna 序列。我們首先選取乙個好長好長的 dna 序列 小兔子是外星生物,dna 序列可能包含 26 個小寫英文本母 然後我們每次選擇兩個區間,詢問如果用兩個區間裡的 dna 序列分別生產出來兩隻兔子,這兩個兔子是否一模一樣。注意...

ContestHunter暑假歡樂賽 SRM 06

t1二分check。為什麼這麼顯然的我沒看出來tat,還在想倒著加入並查集check什麼的,題寫太多思維定勢啦qaq t2是noip題的弱化版。當時沒看出來,寫了個dp。可以看出這一位比上一位大還是小只由轉移的長度奇偶來決定,開兩個bit分別維護奇偶下標是權值來幫忙轉移就行了 t3幾何題qaq好像得...