P4513 小白逛公園

2021-09-11 05:25:30 字數 2754 閱讀 2326

小新經常陪小白去公園玩,也就是所謂的遛狗啦…

在小新家附近有一條「公園路」,路的一邊從南到北依次排著n

nn個公園,小白早就看花了眼,自己也不清楚該去哪些公園玩了。

一開始,小白就根據公園的風景給每個公園打了分-.-。小新為了省事,每次遛狗的時候都會事先規定乙個範圍,小白只可以選擇第a

aa個和第b

bb個公園之間(包括a

aa、b

bb兩個公園)選擇連續的一些公園玩。小白當然希望選出的公園的分數總和盡量高咯。同時,由於一些公園的景觀會有所改變,所以,小白的打分也可能會有一些變化。

那麼,就請你來幫小白選擇公園吧。

輸入格式:

第一行,兩個整數n

nn和m

mm,分別表示表示公園的數量和操作(遛狗或者改變打分)總數。

接下來n

nn行,每行乙個整數,依次給出小白 開始時對公園的打分。

接下來m

mm行,每行三個整數。第乙個整數k

kk,1

11或222。

k =1

k=1k=

1表示,小新要帶小白出去玩,接下來的兩個整數a

aa和b

bb給出了選擇公園的範圍(1≤a

,b≤n

1≤a,b≤n

1≤a,b≤

n)。測試資料可能會出現katex parse error: expected 'eof', got '&' at position 2: a&̲gt;b的情況,需要進行交換;

k =2

k=2k=

2表示,小白改變了對某個公園的打分,接下來的兩個整數p

pp和s

ss,表示小白對第p

pp個公園的打分變成了s

ss(1≤p

≤n

1≤p≤n

1≤p≤n)。

其中,1≤n

≤500000

1≤n≤500 000

1≤n≤50

0000

,1 ≤m

≤100000

1≤m≤100 000

1≤m≤10

0000

,所有打分都是絕對值不超過1000

1000

1000

的整數。

輸出格式:

小白每出去玩一次,都對應輸出一行,只包含乙個整數,表示小白可以選出的公園得分和的最大值。

著名的新手殺手題了,線段樹維護最大欄位和。

需要存下4個引數維護

sum表示區間和,maxl表示表示以左端點為起點向右最大欄位和,maxr表示表示以右端點向左為起點最大欄位和,maxv表示最大欄位和

query中注意如果左右區間均被覆蓋,就合併。

#include

#define lson rt<<1

#define rson rt<<1|1

#define inf 1<<30

using

namespace std;

const

int maxn=

500000

+100

;struct node

tr[maxn<<2]

;int ans=0;

inline

intread()

while

(ch<=

'9'&&ch>=

'0')

return x*f;

}void

pushup

(int rt)

void

build

(int l,

int r,

int rt)

int m=

(l+r)

>>1;

build

(l,m,lson)

;build

(m+1

,r,rson)

;pushup

(rt);}

void

update

(int pos,

int c,

int l,

int r,

int rt)

int m=

(l+r)

>>1;

if(pos<=m)

update

(pos,c,l,m,lson);if

(mupdate

(pos,c,m+

1,r,rson)

;pushup

(rt);}

node query

(int l,

int r,

int l,

int r,

int rt)

int m=

(l+r)

>>1;

node le,ri;

bool jl=

0,jr=0;

if(l<=m)le=

query

(l,r,l,m,lson)

,jl=1;

if(mquery

(l,r,m+

1,r,rson)

,jr=1;

if(jl&jr)

if(jl==1)

return le;

if(jr==1)

return ri;

}void

swap

(int

&x,int

&y)int

main()

if(k==2)

}}

P4513 小白逛公園 線段樹

線段樹是一門比較刁鑽的手藝.此題我們需要維護 4 個變數 amx 代表當前節點的最大值.lmx 代表當前節點以左端點為起點的區間最大值.rmx 代表當前節點以右端點為結尾的區間最大值.sum 代表整段的和.然後我們在 push up 的時候,也是要做蠻多工作.lc 為左端點,rc 為右端點.lmx ...

P4513 小白逛公園 線段樹

小新經常陪小白去公園玩,也就是所謂的遛狗啦 在小新家附近有一條 公園路 路的一邊從南到北依次排著nn個公園,小白早就看花了眼,自己也不清楚該去哪些公園玩了。一開始,小白就根據公園的風景給每個公園打了分 小新為了省事,每次遛狗的時候都會事先規定乙個範圍,小白只可以選擇第aa個和第bb個公園之間 包括a...

洛谷 P4513 小白逛公園

小新經常陪小白去公園玩,也就是所謂的遛狗啦 在小新家附近有一條 公園路 路的一邊從南到北依次排著nn個公園,小白早就看花了眼,自己也不清楚該去哪些公園玩了。一開始,小白就根據公園的風景給每個公園打了分 小新為了省事,每次遛狗的時候都會事先規定乙個範圍,小白只可以選擇第aa個和第bb個公園之間 包括a...