1. 程式人生 > >BZOJ2759 一個動態樹好題 LCT

BZOJ2759 一個動態樹好題 LCT

題解:

的確是動態樹好題

首先由於每個點只有一個出邊

這個圖構成了基環內向樹

我們觀察那個同餘方程組

一旦形成環的話我們就能知道環上點以及能連向環上點的值是多少了

所以我們只需要用一種結構來維護兩個不是直接相連點的狀態

由於有刪邊連邊操作,比較容易想到lct

我們按照套路將它拆掉一條邊形成一顆樹

因為我們現在只知道環上某一點的值,所以我們這棵樹應該是不隨便換根的

每次詢問只需要把當前這個點access再splay一下 查詢用根怎麼表示就可以了

修改方程組等價於刪一條邊,連一條邊

刪的邊如果不在環上 直接刪

刪的邊如果在環上 並且沒有連上 把標記清除

刪的邊如果在環上 並且連上了 把這條邊段刪了,然後把標記邊連上