如果你對樹剖足夠熟悉,那麼就有乙個\(o(n*log*log)\)的演算法,具體分數85'
其相當於從當前節點往上一直打標記,查的時候相當於直接找第乙個被打標記的點,
機房某64巨佬表示這不是卡卡就能過
#include#include#includeusing namespace std;
namespace io
while('0'<=c&&c<='9')
x*=f;
} void write(int x)
if(x>9)
write(x/10);
putchar(x%10+'0'); }}
using namespace io;
namespace tcs
tre[800000*4+5];
void build(int l,int r,int k)
void push_down(int k)
void change(int l,int r,int add,int k)
push_down(k);
change(l,r,add,k<<1);
change(l,r,add,k<<1|1);
tre[k].maxx=max(tre[k<<1].maxx,tre[k<<1|1].maxx);
} int findd(int k)
int ask(int l,int r,int k)
int debug(int pos,int k)
int cnt;
vectorg[800005];
int top[800005],dfn[800005],ori[800005];
int dep[800005],wson[800005],siz[800005],fath[800005];
void addedge(int u,int v)
void dfs1(int u,int fa)
}} void dfs2(int u,int top_chain)
if(dfn[x]>dfn[y])
swap(x,y);
change(dfn[x],dfn[y],val,1);
} int ask(int x)
if(dfn[x]>dfn[y])
swap(x,y);
int temp=ask(dfn[x],dfn[y],1);
if(temp==0)
return 0;
return ori[temp];
} }using namespace tcs;
int f_abs(int x)
int n,q;
int col[800005];
int main()
init(n);
for(int i=1,x;i<=q;i++)
while('0'<=c&&c<='9')
x*=f;
} void write(int x)
if(x>9)
write(x/10);
putchar(x%10+'0'); }}
using namespace io;
namespace tcs
void dfs1(int u,int fa)
}} void dfs2(int u,int top_chain)
if(dep[y]>dep[x])
swap(x,y);
return y; }}
using namespace tcs;
int f_abs(int x)
int n,q;
int col[800005];
sets;
int main()
init(n);
for(int i=1,x;i<=q;i++)
else
set::iterator t=s.upper_bound(x);
if(t==s.begin())
write(lca(ori[*t],ori[x]));
else if(t==s.end())
else
putchar('\n');
} }return 0;}/*
10 10
6 2 7 9 1 10 5 4 3-21
33-58
14-1-5
5 51 1 3 3 1-1
*/
dfs序 樹狀陣列
the first line contains an integer n n 100,000 which is the number of the forks in the tree.output for every inquiry,output the correspond answer per ...
dfs序及其應用
dfs序是用來處理子樹一類問題的,可以把子樹問題轉化為區間問題,以便借助線段樹或樹狀陣列處理。根據dfs的順序來給節點編號,在進入這個節點時更新in陣列,出去的時候更新out陣列,這樣以i為根的子樹的操作就可以變成區間 in i out i 的操作了。int in 100005 out 100005...
練習記錄 dfs序)
牛客每日一題 根據根右左的遍歷順序的到dfs序,再求lis即為可以選到的最多點。利用dfs序維護每種顏色的樹,大佬部落格 需要注意的是當只能取同一邊的兩個點時,要取dfs序差值最大的兩個點,可以想出反例,但不會證明。includeusing namespace std const int maxn ...