小新經常陪小白去公園玩,也就是所謂的遛狗啦…
在小新家附近有一條「公園路」,路的一邊從南到北依次排著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...