1756 Vijos1083 小白逛公園

2021-08-07 21:34:44 字數 1220 閱讀 4428

題目鏈結

題目大意:區間最大子段和,多次詢問

題解:維護一些東西

lm從左端點往右能取到的最大值

rm從右節點往左能取到的最大值

ans儲存當前區間任取一段的最大值

上傳標記的時候比較麻煩,詳見**

詢問返回節點,因為這樣才能保證查詢時資訊的合併不出問題

我的收穫:……

#include 

#include

using

namespace

std;

#define m 500005

#define ls x<<1

#define rs x<<1|1

#define lson l,m,x<<1

#define rson m+1,r,x<<1|1

#define root 1,n,1

int n,m,a[m];

int lmx[m<<2],rmx[m<<2],amx[m<<2],sum[m<<2];

struct tree;

tree mx(tree x,tree y)

inline

void pushup(int x)

void build(int l,int r,int x)

int m=(l+r)>>1;

build(lson);build(rson);

pushup(x);

}void updata(int p,int v,int l,int r,int x)

int m=(l+r)>>1;

if(p<=m) updata(p,v,lson);

if(p>m) updata(p,v,rson);

pushup(x);

}tree query(int l,int r,int l,int r,int x)

; int m=(l+r)>>1;

if(l<=m&&r>m) return mx(query(l,r,lson),query(l,r,rson));

if(l<=m) return query(l,r,lson);

if(r>m) return query(l,r,rson);

}void work()

if(opt==2) updata(x,y,root);

}}void init()

int main()

bzoj1756 Vijos1083 小白逛公園

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

BZOJ1756 Vijos1083 小白逛公園

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

Vijos1083 小白逛公園

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