SDOI2017 樹點塗色

2021-09-28 21:04:07 字數 2472 閱讀 3328

傳送門

塗色的操作和acc

es

saccess

access

很像啊,如何用lct

lctlc

t維護這個東西呢。

由於每次覆蓋的顏色都不同,且是從當前到結點覆蓋到根節點。

那麼如果把顏色相同的一段維護在一條重鏈上,

乙個點到根要經過多少虛邊也就包含多少顏色。

所以用lct

lctlc

t模擬覆蓋的過程,用線段樹維護即可。

虛變實就是子樹減,實變虛就是子樹加。

詢問1就是val

[x]+

val[

y]−2

∗val

[lca

(x,y

)]+1

val[x]+val[y]-2*val[lca(x,y)]+1

val[x]

+val

[y]−

2∗va

l[lc

a(x,

y)]+

1,詢問3就是區間最大值。

寫的時候要想好lct

lctlc

t在原樹中的對應點。

以及初始的時候是乙個點乙個spl

ay

splay

splay。

#include

#define re register

#define cs const

using std::swap;

cs int n=

1e5+10;

int head[n]

,next[n<<1]

,v[n<<1]

,cnt=0;

int siz[n]

,dep[n]

,top[n]

,fa[n]

,son[n]

,l[n]

,r[n]

,t[n]

,tot=0;

namespace io

template

<

typename t>

inline t get()

inline

intgi()

}using io::gi;

int n,m,u,v,g,op;

namespace sgtt[n<<2]

;inline

void

pushup

(int root)

inline

void

pushnow

(int root,

int val)

inline

void

pushdown

(int root)

}inline

void

build

(int root,

int l,

int r)

build

(lc,l,mid)

,build

(rc,mid+

1,r)

,pushup

(root);}

inline

void

update

(int root,

int l,

int r,

int val)

inline

intquery_max

(int root,

int l,

int r)

inline

intval

(int root,

int pos)

#undef lc

#undef rc

#undef mid

}using sgt::val;

namespace lct

inline

intisroot

(int x)

inline

void

rotate

(int x)

inline

void

splay

(int x)

inline

intgetpos

(int x)

inline

void

access

(int x)}}

inline

void

add(

int u,

int v)

void

dfs1

(int u,

int f)

}void

dfs2

(int u,

int tp)

inline

intlca

(int u,

int v)

return

(dep[u]

)?u:v;

}int

main()

}

SDOI2017 樹點塗色

description bob有一棵n個點的有根樹,其中1號點是根節點。bob在每個點上塗了顏色,並且每個點上的顏色不同。定義一條路 徑的權值是 這條路徑上的點 包括起點和終點 共有多少種不同的顏色。bob可能會進行這幾種操作 1 x 把點x到根節點的路徑上所有的點染上一種沒有用過的新顏色。2 x ...

SDOI2017 樹點塗色

題目鏈結 有三種操作,1.把點 x xx 到根節點的路徑上所有的點染上一種沒有用過的新顏色。2.求 x xx 到 y yy 的路徑的上的不同顏色數。3.在以x xx為根的子樹中選擇乙個點,使得這個點到根節點的路徑的不同顏色數最大,求最大權值。可以發現修改操作的乙個性質 每種顏色的節點一定會形成一條鏈...

SDOI2017 樹點塗色

bob有一棵nn個點的有根樹,其中1號點是根節點。bob在每個點上塗了顏色,並且每個點上的顏色不同。定義一條路徑的權值是 這條路徑上的點 包括起點和終點 共有多少種不同的顏色。bob可能會進行這幾種操作 把點xx到根節點的路徑上所有的點染上一種沒有用過的新顏色。求xx到yy的路徑的權值。在以x為根的...