題意: 有兩種操作 一種是單點改為b 一種是給出區間ab 區間ab的最大上公升子串行個數。。
線段樹目前學了三種 第一種單點操作很簡單 第二種區域操作加上懶惰標記即可
現在這種 為區間合併。。。。多看就好了
#includeusingnamespace
std;
#define n 100010
#define lson l,m,pos<<1
#define rson m+1,r,pos<<1|1
#define mid m=(l+r)>>1
#define ll long long
int lsum[n<<2],rsum[n<<2],ssum[n<<2
],num[n];
void up(int l,int r,int
pos)
}void build(int l,int r,int
pos)
intmid;
build(lson);
build(rson);
up(l,r,pos);
}void update(int x,int v,int l,int r,int
pos)
intmid;
if(x<=m)update(x,v,lson);
else
update(x,v,rson);
up(l,r,pos);
}int query(int l,int r,int l,int r,int
pos)
intmain()
}return0;
}
HDU 3308 LCIS(線段樹合併)
維護乙個區間的包含最左的元素的lcis,包含最右元素的lcis,以及整個區間的lcis,然後pushup的時候就更新這三個值就行了。注意要考慮左右兒子可以 接 起來的情況等等 查詢的時候要注意,也要考慮左右可以 接 起來時候,不過還要注意,有可能左右兒子邊界的已經 越界了 就是超過了查詢範圍,還要取...
HDU 3308 LCIS(線段樹區間合併)
給你乙個序列,現在進行一些操作,一種是詢問某一段最長連續上公升子串行 lcis 的長度,另乙個就是修改某個點的值 區間合併的簡單題 這裡的區間合併,要判斷的是左兒子最右邊的值和右兒子最左邊的值的關係,那麼我們這道題要維護的東西就有 最左端開始的lcis,包括最右端的lcis,該區間的lcis,最左邊...
HDU 3308 LCIS 線段樹 區間合併
題目鏈結 前言 最近在做線段樹的練習,對於區間合併問題不是很清楚,花了好久才把線段樹的區間合併問題理清楚,所以把學習的過程記錄下來,建議手動建樹並模擬測試用例 題目大意 有乙個陣列,求這個陣列中最長的單調連續遞增序列的長度 題解 見一下注釋 樹結點的定義 有該結點的左端點 右端點 有該結點對應區間的...