QTREE 子杰樹 線段樹 樹鏈剖分

2021-07-26 20:52:37 字數 1092 閱讀 2014

【題解】

樹鏈剖分的模板題,我早就寫過了,但長時間沒做樹剖的題目,這個模板已經忘得差不多了,今天再做用來複習樹剖,順便卡卡常數。

#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節點的路徑上所有邊的最大權值。解題思路 對這棵樹進行樹鏈剖分,然後用線段樹維護區間最大值。樹鏈剖分理解 通過規定一種特殊的次序,將樹形結構變為線性結構,從而可以用多種資料結構來解決樹上路徑方...