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...