[線段樹合併][學習筆記]
前置知識
權值線段樹&動態開點線段樹
適用範圍
有時候我們需要對權值線段樹進行合併操作。然後就用到了線段樹合併。一般是有很多棵線段樹,然後需要將其中的兩棵合併起來。
方法
其實方法很簡單呢。就是分三種情況討論一下。假設現在要將線段樹a和線段樹b合併。並且a成為合併之後的線段樹。
如果a有當前子樹,而b沒有,那麼返回a的當前子樹
如果b有當前字數,而a沒有,那麼返回b的當前子樹
如果現在到了葉子節點,那麼就按照題目的要求將葉子節點合併起來。
不要忘記pushup
int merge(int cur,int a,int l,int r) { if(!cur) return a; if(!a) return cur; if(l == r) { //對葉子節點進行操作 return cur; } int mid = (l + r) >> 1; Ls = merge(Ls,TR[a].ls,l,mid); Rs = merge(Rs,TR[a].rs,mid + 1,r); up(cur); return cur; }
例題
做完這道例題應該就懂了。
luogu4556
題解
相關推薦
[線段樹合併][學習筆記]
前置知識 權值線段樹&動態開點線段樹 適用範圍 有時候我們需要對權值線段樹進行合併操作。然後就用到了線段樹合併。一般是有很多棵線段樹,然後需要將其中的兩棵合併起來。 方法 其實方法很簡單呢。就是分三種情況討論一下。假設現在要將線段樹a和線段樹b合併。並且a成為合併之後的線段樹。 如果a有當
[學習筆記]線段樹合併
1、[POI2011]ROT-Tree Rotations 分析:線段樹合併人生第一題。 網上的題解我都沒看懂……我自己講一下好了 線段樹合併就是把兩棵權值線段樹合併到一棵 那怎麼合併呢? 假設有這麼兩棵樹: 一個結點代表一段值域區間有幾個數,那麼可以看出合併後應該是這樣的 然後具體
【04】蒙特卡洛樹入門學習筆記
alter ike cnblogs append 最大的 有趣的 控制理論 空間 nod 蒙特卡洛樹學習筆記 1. 強化學習(RL) 概念 ? 強化學習是機器學習中的一個領域,強調如何基於環境而行動,以取得最大化的預期利益。其靈感來源於心理學中的行為主義理論,即有機體如何
「主席樹」學習筆記
== 傳說 比較 返回值 普通 哪裏 表數 成功 可能 主席樹 主席樹——可持久化線段樹。話說這個名字的來歷也非常有意思,傳說是一位非常非常巨的巨佬發明的,他的名字叫做黃嘉泰。由於名字縮寫和一位竹席的縮寫一模一樣,於是就叫主席樹了…… 所謂可持久化線段樹,就是可以查詢歷史更
【題解】[牛客網NOIP賽前集訓營-提高組(第一場)]C.保護 LCA+線段樹動態開點+線段樹合併
題目連結 ___ #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N=2e5+10; int n,m,hd[N],to
POI2011]ROT-Tree Rotations,洛谷P35231,線段樹合併
正題 給一顆n各節點的二叉樹,每個節點可以交換左右子樹,求先序遍歷的最小值。 這題很明顯,交換兩棵子樹,子樹內的逆序對不變的,變的只是左右兩邊出現的逆序對,那麼每一個葉子節點開一棵權值線段樹,每次向上合併
jzoj5926 naive 的圖 最小生成樹+啟發式合併+線段樹合併
Description 眾所周知,小 naive 有一張 n 個點,m 條邊的帶權無向圖。第 i 個點的顏色為 ci。d(s, t)表示從點 s 到點 t 的權值最小的路徑的權值,一條路徑的權值定義為路徑上權值最大的邊的權值。 求所有滿足 u < v, |cu − cv|
BZOJ.5417.[NOI2018]你的名字(字尾自動機 線段樹合併)
LOJ 洛谷 BZOJ 考慮\(l=1,r=|S|\)的情況: 對\(S\)串建SAM,\(T\)在上面匹配,可以得到每個位置\(i\)的字尾的最長匹配長度\(mx[i]\)。 因為要去重,對\(T\)也建SAM,計算上面所有節點的答案。記\(pos[i]\)表示\(i\)節點第一次出現的下標(同一節點代表
[LOJ#2473][九省聯考2018]祕密襲擊(樹形DP+生成函式+線段樹合併+拉格朗日插值)
Address 洛谷P4365 BZOJ5250 LOJ#2473 The First Step - 轉化 簡版題意:給定一棵點帶權樹,求樹上所有大小大於 k
codeforcs 1063F. String Journey - dp -SAM - 主席樹/線段樹合併 - 子串定位 - 倍增
題目大意: 給你一個長為 n n n的字串
洛谷P3066 [USACO12DEC]逃跑的Barn (線段樹合併)
題目描述It's milking time at Farmer John's farm, but the cows have all run away! Farmer John needs to round them all up, and needs your help in the search.
bzoj 4756 [Usaco2017 Jan]Promotion Counting——線段樹合併
題目:https://www.lydsy.com/JudgeOnline/problem.php?id=4756 線段樹合併裸題。那種返回 int 的與傳引用的 merge 都能過。不知別的題是不是這樣。 #include<iostream> #include<cstdio>
BZOJ:5457: 城市(線段樹合併)(尚待優化)
5457: 城市 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 18 Solved: 12[Submit][Status][Discuss] Description 有n
決策樹 ID3學習筆記
最近開始看機器學習方面的知識,決策樹(DT)主要有三種演算法 ID3(Iterative Dichotomiser 3)、 C4.5、CART哈。 包括的知識有,資訊熵、資訊增益、資訊增益率、基尼指數概念,另外還有預剪枝、後剪枝等。 決策樹演算法的優點: 1:易於理解,使用白盒
Gym - 101194G Pandaria (並查集+倍增+線段樹合併)
題意: 給定一個無向圖。每個點有一種顏色。現在給定q個詢問,每次詢問x和w,求所有能通過邊權值不超過w的邊走到x的點的集合中,哪一種顏色的點出現的次數最多。次數相同時輸出編號最小的那個顏色。強制線上。 解題思路:膜拜大神們的程式碼!看了好久,終於
[BZOJ2212][Poi2011]Tree Rotations(線段樹合併)
Address 洛谷 P3521 BZOJ 2212 LOJ #2163 Solution 非常有意思的題 一個直觀的想法 對於一個點 u
LOJ2537 PKUWC2018 Minimax 樹形DP、線段樹合併
傳送門 題意:自己去看 首先可以知道,每一個點都有機率被選到,所以$i$與$V_i$的關係是確定了的。 所以我們只需要考慮每一個值的取到的概率。 很容易設計出一個$DP$:設$f_{i,j}$為在第$i$個點取到權值第$j$小的點的概率,轉移就是$f_{i,j}=f_{lson,j} \times
BZOJ4919 大根堆(動態規劃+線段樹合併/treap+啟發式合併)
一個顯然的dp是設f[i][j]為i子樹內權值<=j時的答案,則f[i][j]=Σf[son][j],f[i][a[i]~n]++。這樣是可以線段樹合併的,將各兒子加起來然後打上加法標記即可。需要標記永久化。 另一種做法是考慮擴充套件經典的單調佇列優化LIS的做法,維護子樹內答案為k時最小的最
Loj2537 「PKUWC2018」Minimax (線段樹合併維護dp)
分析 設 f [ i ]
【SAM+線段樹合併/SA+掃描線】CF1037H Security
【題目】 原題地址 給定一個長度為 n n n的字串