P3979 遙遠的國度 樹鏈剖分

2022-05-01 13:39:08 字數 2077 閱讀 2868

題意:

操作一:將根節點變為x

操作二:將x到y的點權變為v

操作三:詢問x及其子樹中最小點權

按照1進行樹剖即可

如果 x為根節點  那麼輸出線段樹最小值即可

如果x不在1-root的路徑上  那麼正常輸出x的子樹即可(為+siz) 

如果x在1-root的路徑上  設x在1-root上的兒子節點為y  輸出除了 id[y],id[y]+siz[y]-1 的其他部分的最小值即可 也就是  1----d[y]-1   id[y]+siz[y]-----n

#includeusing

namespace

std;

#define rep(i,a,b) for(int i=(a);i<=(b);i++)

#define repp(i,a,b) for(int i=(a);i>=(b);--i)

#define ll long long

#define see(x) (cerr<

#define clr(a,v) memset(a,v,sizeof a)

////////////////////////////////////

/const

int n=1e6+100

;ll minn[n

<<2],col[n<<2

];int

n,m,root,t;

ll w[n],node[n];

void build(int l,int r,int

pos)

int m=(l+r)>>1

; build(l,m,pos

<<1);build(m+1,r,pos<<1|1

); minn[pos]=min(minn[pos<<1],minn[pos<<1|1

]);}

void down(int

pos)

void upsum(int l,int r,ll v,int l,int r,int

pos)

down(pos);

int m=(l+r)>>1

;

if(l<=m)upsum(l,r,v,l,m,pos<<1

);

if(r>m)upsum(l,r,v,m+1,r,pos<<1|1

); minn[pos]=min(minn[pos<<1],minn[pos<<1|1

]);}

ll qmin(

int l,int r,int l,int r,int

pos)

int fa[n][30

],id[n],ncnt,dep[n],son[n],siz[n],top[n],head[n],pos;

struct edgeedge[n<<1

];void add(int a,int b);head[a]=pos;}

void dfs1(int x,intf)}

void dfs2(int x,int

topf)

}void upsum(int x,int y,int

v)

if(dep[x]>dep[y])swap(x,y);

upsum(id[x],id[y],v,

1,n,1);}

int get1(int x,int

k)int

main()

rep(i,

1,n)scanf("

%lld

",&node[i]);

scanf("%d

",&root);

dfs1(

1,1);

dfs2(

1,1);

build(

1,n,1);int

a,b,c,y;ll d;

while(m--)

if(dep[x]1)][0]==x)

else printf("

%lld\n

",qmin(id[x],id[x]+siz[x]-1,1,n,1

)); }

}return0;

}

view code

洛谷P3979 遙遠的國度 樹鏈剖分

時空限制 1000ms 128mb 題目描述 zcwwzdjn在追殺十分sb的zhx,而zhx逃入了乙個遙遠的國度。當zcwwzdjn準備進入遙遠的國度繼續追殺時,守護神rapid阻攔了zcwwzdjn的去路,他需要zcwwzdjn完成任務後才能進入遙遠的國度繼續追殺。問題是這樣的 遙遠的國度有n個...

題解 P3979 遙遠的國度

text quad 可以看看我的一篇blog關於樹鏈剖分 換根操作 筆記 內容都差不多 quad 另外洛谷上還有一道關於換根操作的題目 cf916e jamie and tree 我的題解 text 換根,直接換即可 路徑修改,就和普通樹剖一樣。子樹修改,這個需要分類討論。下面會細講 quad 因為...

洛谷 P3979 遙遠的國度

洛谷傳送門 zcwwzdjn在追殺zhx,而zhx逃入了乙個遙遠的國度。當zcwwzdjn準備進入遙遠的國度繼續追殺時,守護神rapid阻攔了zcwwzdjn的去路,他需要zcwwzdjn完成任務後才能進入遙遠的國度繼續追殺。問題是這樣的 遙遠的國度有 nn 個城市,這些城市之間由一些路連線且這些城...