BZOJ1756 Vijos1083 小白逛公園

2022-05-31 19:39:08 字數 1807 閱讀 8934

description

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

個公園,小白早就看花了眼,自己也不清楚該去哪些公園玩了。一開始,小白就根據公園的風景給每個公園打了分

-.-。小新為了省事,每次遛狗的時候都會事先規定乙個範圍,小白只可以選擇第a個和第b個公園之間(包括a、b

兩個公園)選擇連續的一些公園玩。小白當然希望選出的公園的分數總和盡量高咯。同時,由於一些公園的景觀會

有所改變,所以,小白的打分也可能會有一些變化。那麼,就請你來幫小白選擇公園吧。

input

第一行,兩個整數n和m,分別表示表示公園的數量和操作(遛狗或者改變打分)總數。接下來n行,每行乙個整數

,依次給出小白 開始時對公園的打分。接下來m行,每行三個整數。第乙個整數k,1或2。k=1表示,小新要帶小白

出去玩,接下來的兩個整數a和b給出了選擇公園的範圍(1≤a,b≤n);k=2表示,小白改變了對某個公園的打分,

接下來的兩個整數p和s,表示小白對第p個公園的打分變成了s(1≤p≤n)。其中,1≤n≤500 000,1≤m≤100 00

0,所有打分都是絕對值不超過1000的整數。

output

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

sample input

5 31 2 -3 4 5

1 2 3

2 2 -1

1 2 3

sample output2-1

最大子串和,區間版的

非區間版的可以看下最大連續子數列和

這題只要多定義乙個+號即可

#include#include#include#include#include#define inf 0x7f7f7f7f

using namespace std;

typedef long long ll;

typedef unsigned int ui;

typedef unsigned long long ull;

inline int read()

inline void print(int x)

const int n=5e5;

struct segment

void clear()

}tree[n*4+10];

friend ac operator +(const ac &x,const ac &y)

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

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

build(ls,l,mid),build(rs,mid+1,r);

tree[p]=tree[ls]+tree[rs];

}void change(int p,int l,int r,int x,int t)

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

if (x<=mid) change(ls,l,mid,x,t);

if (x>mid) change(rs,mid+1,r,x,t);

tree[p]=tree[ls]+tree[rs];

}ac query(int p,int l,int r,int x,int y)

}t;int main()

if (t==2) t.change(1,1,n,x,y);

}return 0;

}

bzoj1756 Vijos1083 小白逛公園

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

1756 Vijos1083 小白逛公園

題目鏈結 題目大意 區間最大子段和,多次詢問 題解 維護一些東西 lm從左端點往右能取到的最大值 rm從右節點往左能取到的最大值 ans儲存當前區間任取一段的最大值 上傳標記的時候比較麻煩,詳見 詢問返回節點,因為這樣才能保證查詢時資訊的合併不出問題 我的收穫 include include usi...

BZOJ1756 小白逛公園

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