樹鏈剖分 模板

2021-06-18 09:41:33 字數 927 閱讀 1661

class match;

node a[n];

struct no;

no aa[n*4];

void init()

void addpage(int x,int y)

void dfs(int s,int faa,int h)//根節點,父節點和深度的

if(max!=0) son[s]=sign;

} void dfs2(int s,int faa,int tp)//搜尋top值,和w值得 }

void bulidtree(int s,int l,int r)//建立線段樹

void pushdown(int s)//進行更新的

int search(int s,int x)//查詢線段樹中x節點的值x=w[?]'

void deal(int s,int x,int y,int z)//處理x和y之間的路徑什麼的

if(dep[x]>dep[y])

swap(x,y);

refresh(1,w[x],w[y],z);

} void refresh(int s,int l,int r,int x)//對l和r之間進行更新的

if(aa[s].flag==true)

pushdown(s);

int mid=(aa[s].l+aa[s].r)/2;

if(r<=mid)

refresh(2*s,l,r,x);

else if(l>mid)

refresh(2*s+1,l,r,x);

else

refresh(2*s,l,r,x),

refresh(2*s+1,l,r,x);

}};match sa;

int main()

} return 0;

}

模板 樹鏈剖分

define maxn 50010 define l u u 1 define r u u 1 1 寫在類裡面爆棧 int n,m,q int tim 時間戳 int num maxn 樹上每個節點的初始值 int siz maxn siz u 表示以u為根的子樹的節點數 int top maxn ...

樹鏈剖分模板

點權模板 1 m a b c將節點a到節點b路徑上所有點都染成顏色c 2 q a b詢問節點a到節點b路徑上的顏色段數量 連續相同顏色被認為是同一段 如 112221 由3段組成 11 222 和 1 const int n 100100 struct edge g n 2 int cnt,head...

模板 樹鏈剖分

如果你會了樹上dp,還會線段樹 沒錯!我都會啊!那你為什麼寫不出樹鏈剖分?by勇者和路由器的對話,今天二位仍然過得十分愉快 bzoj1036 zjoi2008 樹的統計 題目描述 一棵樹上有n個節點,編號分別為1到n,每個節點都有乙個權值w。我們將以下面的形式來要求你對這棵樹完成一些操作 i.cha...