【題解】
樹鏈剖分的模板題,我早就寫過了,但長時間沒做樹剖的題目,這個模板已經忘得差不多了,今天再做用來複習樹剖,順便卡卡常數。
#include#include#include#include#include#include#includeusing namespace std;
#define file "read"
#define maxn 10010
#define up(i,j,n) for(int i=j;i<=n;++i)
#define dn(i,j,n) for(int i=j;i>=n;--i)
#define cmax(a,b) a=max(a,b)
#define cmin(a,b) a=min(a,b)
namespace init
inline int read()
while(isdigit(ch))
return x*f;
}}using namespace init;
struct nodee[maxn<<1];
int t,n,len,root,z,link[maxn],size[maxn],son[maxn],deep[maxn],tr[maxn*100],w[maxn],f[maxn],top[maxn],d[maxn][3];
void insert(int x,int y,int v)
void dfs1(int x)
}void dfs2(int x,int temp)
void updata(int p,int l,int r,int x,int v)
int maxi(int p,int l,int r,int x,int y)
int find(int x,int y)
void init()
dfs1(root); dfs2(root,root);
up(i,1,n-1)
}void work()
else if(ch[0]=='c')
else break; }}
int main()
return 0;
}
Qtree3題解(樹鏈剖分 線段樹 set)
外話 最近洛谷加了好多好題啊.原題入口 這題好像是spoj的題,挺不錯的。看沒有題解還是來一篇.很易懂吧。我的做法十分的暴力 樹鏈剖分 偽 線段樹 std set.首先,我們可以考慮每次修改乙個點的顏色的影響。易知,翻轉乙個點顏色,只會對於他的子樹產生影響,對於別的點就毫無意義了。然後,只要學過一點...
樹鏈剖分 樹鏈剖分講解
好了,這樣我們就成功解決了對樹上修改查詢邊權或點的問題。下面放上 vector v maxn int size maxn dep maxn val maxn id maxn hson maxn top maxn fa maxn 定義 int edge 1,num 1 struct tree e ma...
SPOJ 375 QTREE 樹鏈剖分入門題
題目大意 對一棵有n n 10000 個點的樹若干次操作,每次操作可以把第i條邊的權值改為w,或者求u節點到v節點的路徑上所有邊的最大權值。解題思路 對這棵樹進行樹鏈剖分,然後用線段樹維護區間最大值。樹鏈剖分理解 通過規定一種特殊的次序,將樹形結構變為線性結構,從而可以用多種資料結構來解決樹上路徑方...