hdu3308
區間合并比較模板的題,就是求一個區間的LCIS
線段樹維護左最大LCIS,右最大LCIS,區間LCIS
看代碼就行
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define maxn 100005 int lval[maxn<<2],rval[maxn<<2];//????×óóò??μ??μ int lmx[maxn<<2],rmx[maxn<<2],mx[maxn<<2];//????×ó2àLCIS£?????óò2àLCIS£?????LCIS inline void pushup(int rt,int l,int r){lval[rt]=lval[rt<<1];rval[rt]=rval[rt<<1|1];//?üD?×óóò??μ?//?üD?×óóòLCISoíLCISlmx[rt]=lmx[rt<<1];//×ó??rmx[rt]=rmx[rt<<1|1];//óò??mx[rt]=max(mx[rt<<1],mx[rt<<1|1]);int m=l+r>>1;int lenl=m-l+1,lenr=r-m;//×óóò×ó????3¤?èif(rval[rt<<1]<lval[rt<<1|1]){//o?2¢if(lmx[rt<<1]==lenl)lmx[rt]+=lmx[rt<<1|1];if(rmx[rt<<1|1]==lenr)rmx[rt]+=rmx[rt<<1];mx[rt]=max(mx[rt],rmx[rt<<1]+lmx[rt<<1|1]);}mx[rt]=max(mx[rt],max(lmx[rt],rmx[rt])); } void build(int l,int r,int rt){if(l==r){scanf("%d",&lval[rt]);rval[rt]=lval[rt];lmx[rt]=rmx[rt]=mx[rt]=1;return;}int m=l+r>>1;build(lson);build(rson);pushup(rt,l,r); } void update(int pos,int c,int l,int r,int rt){if(l==r){lval[rt]=rval[rt]=c;return;}int m=l+r>>1;if(pos<=m) update(pos,c,lson);else if(pos>m) update(pos,c,rson);pushup(rt,l,r); } int query(int L,int R,int l,int r,int rt){if(L<=l && R>=r){return mx[rt];}int m=l+r>>1;if(R<=m) return query(L,R,lson);//è?1?[L,R]?ú×ó????else if(L>m) return query(L,R,rson);else {//μ?á???????à?2é?òint temp1=query(L,R,lson);int temp2=query(L,R,rson);int temp3=0;if(rval[rt<<1]<lval[rt<<1|1]){temp3+=min(m-L+1,rmx[rt<<1]);temp3+=min(R-m,lmx[rt<<1|1]);}/*return max(temp3,max(temp1,temp2));*///??óúá???×ó????£???óDèy???é??×÷?a×????á1?£?ò?ê?×ó????μ?LCIS£??tê?óò????μ?LCIS£?èyê?o?2¢oó?D??μ???ò???return max(max(temp1,temp2),temp3);} }int main(){int T,n,q;scanf("%d",&T);while(T--){scanf("%d%d",&n,&q);build(0,n-1,1);int a,b;char op[2];while(q--){scanf("%s%d%d",op,&a,&b);if(op[0]=='Q') printf("%d\n",query(a,b,0,n-1,1));else update(a,b,0,n-1,1);}}return 0; }?
轉載于:https://www.cnblogs.com/zsben991126/p/9971648.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
- 上一篇: Android-----applicat
- 下一篇: scala中类的继承关系