本文主要介紹頂級監(jiān)控cpu(監(jiān)控cpu命令),下面一起看看頂級監(jiān)控cpu(監(jiān)控cpu命令)相關(guān)資訊。
話題表面
歷史最大線段樹??紤]到每個(gè)區(qū)間的運(yùn)算大概是這樣的:先有一些加法運(yùn)算,再有一個(gè)賦值。在這個(gè)賦值之后,所有的操作都可以表示為賦值。所以維護(hù)兩種標(biāo)記,一種是之前添加的,一種是賦值的。只需記錄作業(yè)是否在此時(shí)開始。代碼極難調(diào)整,所以建議在寫之前理清思路...
單擊以查看代碼# includesiostrem # inclucstiousingnamespace std;typedef long long llconst int n = 1e5 13const ll inf = 0x 3 f3 f3 f3 f3 fll;inline ll max(const ll a,const ll b){return ab?a:b;}int n,a[n],m;結(jié)構(gòu)段樹{int l,r;ll add,preadd,max,premax,set,preset布爾狀態(tài);} t[n2];#定義ls p1 #定義rs p1 | 1 #定義mid ((t[p])。l t[p]。r)1)內(nèi)聯(lián)void刷新(int p){t[p]。max=max(t[ls]。max,t[rs]。max);t[p]。premax=max(t[ls]。premax,t[rs]。premax);}void build(int p,int l,int r){t[p]。l=l,t[p]。r=r,t[p]。max=t[p]。premax =-inf;if(l==r){t[p]。max=t[p]。premax = a[l];返回;}build(ls,l,mid);build(rs,mid 1,r);刷新(p);}inline void pushup_set(int p,ll x,ll px){if(!t[p]。state){t[p]。狀態(tài)= 1;t[p]。預(yù)置= pxt[p]。premax=max(t[p])。premax,px);}else{t[p]。預(yù)設(shè)=最大值(t[p]。預(yù)置,px);t[p]。premax=max(t[p])。premax,px);}t[p]。set=t[p]。max = x;} inline void pushoup _ add(int p,ll x,ll px){if(t[p]。state){t[p]。預(yù)設(shè)=最大值(t[p]。預(yù)設(shè),t[p]。設(shè)置px);t[p]。premax=max(t[p])。premax,t[p]。max px);t[p]。set =x,t[p]。max = x;}else{t[p]。preadd=max(t[p])。preadd,t[p]。添加px);t[p]。premax=max(t[p])。premax,t[p]。max px);t[p]。add =x,t[p]。max = x;} } inline void push down(int p){ pushup _ add(ls,t[p].添加,t[p]。preadd);pushup_add(rs,t[p])。添加,t[p]。preadd);t[p]。add=t[p]。preadd = 0;if(t[p]。state){pushup_set(ls,t[p])。set,t[p]。預(yù)設(shè));pushoup _ set(rs,t[p])。set,t[p]。預(yù)設(shè));t[p]。state=0,t[p]。set=t[p]。預(yù)置= 0;}}void update(int p,int l,int r,ll x){if(l=t[p]。lt[p]。r=r) return pushup_add(p,x,x);下推(p);if(l=mid)更新(ls,l,r,x);if(rmid) update(rs,l,r,x);刷新(p);}void modify(int p,int l,int r,ll x){if(l=t[p]。lt[p]。r=r)返回pushup_set(p,x,x);下推(p);if(l=mid)修改(ls,l,r,x);if(rmid) modify(rs,l,r,x);刷新(p);}ll query_max(int p,int l,int r){if(l=t[p]。lt[p]。r=r)返回t[p]。max下推(p);ll res =-inf;if(l=mid) res=max(res,query_max(ls,l,r));if(rmid) res=max(res,query_max(rs,l,r));返回res;}ll query_pre(int p,int l,int r){if(l=t[p]。lt[p]。r=r)返回t[p]。premax下推(p);ll res =-inf;if(l=mid) res=max(res,query_pre(ls,l,r));if(rmid) res=max(res,query_pre(rs,l,r));返回res} int main{ scanf( % d ,n);for(int i = 1;i = n;i)scanf( % d ,a[i]);build(1,1,n);scanf( % d ,m);while(m-){ char op[2];int x,y,z;scanf( %s%d%d,op,x,y);開關(guān)(op[0]){ case ;問與答。;:printf( % lld \ n ,query_max(1,x,y));打破;凱斯 a :printf( % lld \ n ,query_pre(1,x,y));打破;凱斯 寶潔公司。;:s canf( % d ,z);update(1,x,y,z);打破;凱斯 c :s canf( % d ,z);modify(1,x,y,z);打破;} }返回0;}標(biāo)簽:
賦值加法
了解更多頂級監(jiān)控cpu(監(jiān)控cpu命令)相關(guān)內(nèi)容請關(guān)注本站點(diǎn)。