bzoj
做個轉化
最開始都是虛邊 操作1
1
就是lc
t' role="presentation">lct
lct裡的
acce
ssa cc
es
s操作
求的就是路徑上虛邊的個數+1
然後就好辦了
用樹鏈剖分+線段樹來維護每個點到根虛邊的個數的最大值 操作1
1
:access
' role="presentation">acc
essa
cces
s時虛實邊的轉換,要把原來連的點的sp
lay spl
ay
的最左邊的點在原樹中的子樹所有點+1,再把現在連的點做同樣的操作-1 操作2
2
:單點查詢,記de
ep[x
]' role="presentation">dee
p[x]
deep
[x]為
x x
到根的虛邊個數,那麼答案就是de
ep[x
]+de
ep[y
]−2∗
deep
[lca
]+1' role="presentation">dee
p[x]
+dee
p[y]
−2∗d
eep[
lca]
+1de
ep[x
]+de
ep[y
]−2∗
deep
[lca
]+1操作
3 3
:子樹最大值
# include
# define rg register
# define il inline
# define fill(a, b) memset(a, b, sizeof(a))
using
namespace
std;
typedef
long
long ll;
const
int _(2e5 + 5);
il ll input()
int size[_], fa[_], deep[_], top[_], son[_], dfn[_], index, ed[_], id[_];
int fst[_], nxt[_], to[_], cnt, n, m;
int ch[2][_], fa[_];
int mx[_ << 2], tag[_ << 2];
il void add(rg int u, rg int v)
# define lson x << 1, l, mid
# define rson x << 1 | 1, mid + 1, r
il void build(rg int x, rg int l, rg int r)
rg int mid = (l + r) >> 1;
build(lson); build(rson);
mx[x] = max(mx[x << 1], mx[x << 1 | 1]);
}il void modify(rg int x, rg int l, rg int r, rg int l, rg int r, rg int v)
rg int mid = (l + r) >> 1;
if(l <= mid) modify(lson, l, r, v);
if(r > mid) modify(rson, l, r, v);
mx[x] = max(mx[x << 1], mx[x << 1 | 1]) + tag[x];
}il int query(rg int x, rg int l, rg int r, rg int l, rg int r)
# undef lson
# undef rson
il void dfs1(rg int u)
}il void dfs2(rg int u, rg int top)
il int lca(rg int u, rg int v)
return deep[u] > deep[v] ? v : u;
}il int son(rg int x)
il int isroot(rg int x)
il int find(rg int x)
il void rotate(rg int x)
il void splay(rg int x)
il void access(rg int x)
}int main(rg int argc, rg char* argv)
else
printf("%d\n", query(1, 1, n, dfn[x], ed[x]) + 1);
}return
0;}
BZOJ4817 Sdoi2017 樹點塗色
time limit 10 sec memory limit 128 mb submit 515 solved 302 submit status discuss bob有一棵n個點的有根樹,其中1號點是根節點。bob在每個點上塗了顏色,並且每個點上的顏色不同。定義一條路 徑的權值是 這條路徑上的點...
bzoj4817 SDOI2017 樹點塗色
bob有一棵n個點的有根樹,其中1號點是根節點。bob在每個點上塗了顏色,並且每個點上的顏色不同。定義一條路 徑的權值是 這條路徑上的點 包括起點和終點 共有多少種不同的顏色。bob可能會進行這幾種操作 1 x 把點x到根節點的路徑上所有的點染上一種沒有用過的新顏色。2 x y 求x到y的路徑的權值...
bzoj 4817 Sdoi2017 樹點塗色
bob有一棵n個點的有根樹,其中1號點是根節點。bob在每個點上塗了顏色,並且每個點上的顏色不同。定義一條路 徑的權值是 這條路徑上的點 包括起點和終點 共有多少種不同的顏色。bob可能會進行這幾種操作 1 x 把點x到根節點的路徑上所有的點染上一種沒有用過的新顏色。2 x y 求x到y的路徑的權值...