BJOI2014 大融合 lct維護虛子樹大小

2021-10-06 16:11:28 字數 1221 閱讀 6056

lct在動態連邊和刪邊方面比較有優勢,但是在維護子樹資訊方面又沒有樹鏈剖分那麼方便。這道題算是lct維護虛子樹資訊比較裸的一道題。

以s陣列為總的子樹大小,sx陣列為虛子樹大小。

要維護虛子樹資訊 在lct原來的模板上有三個地方需要改。

pushup函式:總子樹大小顯然是實子樹大小+虛子樹大小

i pushup(r x)

access函式:在進行access的過程,x的虛子樹產生了變化,本來是y,後來變成了x現在的右兒子。

i access(r x)

}link函式:在連線兩個點的時候,(x連y)我們把x連做y的虛兒子,顯然y的虛子樹需要加上x的大小 另外需要注意的是 必須把y結點splay到最上面才能保證更新的正確性(類似splay的更新原理)

i link(r x,r y)

答案顯然就是把x和y結點split出來 然後(sx[x]+1)*(sx[y]+1)

#include#define r register int

#define i inline void

#define lc c[x][0]

#define rc c[x][1]

using namespace std;

const int n=2e5+100;

typedef long long ll;

inline int in()

int f[n],c[n][2],st[n];

int s[n],sx[n];

bool r[n];

inline bool nroot(r x)//原理很簡單,如果連的是輕邊,他的父親的兒子裡沒有它

i pushup(r x)

i pushr(r x)//翻轉操作

i pushdown(r x)

}i rotate(r x)

i splay(r x)

pushup(x);

}i access(r x)

}i makeroot(r x)

int findroot(r x)

i split(r x,r y)

i link(r x,r y)//lct模板到此結束

i cut(r x,r y)

}int main()

} return 0;

}

天地融2014校園招聘筆試題

注 憑記憶寫的,題型可能有變化。1 int a define m x,y x y a m 4 2,3 a 這是考察巨集定義的知識,巨集定義就是簡單的替換。m 4 2,3 的展開式為4 2 3。所以a 4。下面的這兩個例子可能有助於更好的理解 define m x x x x 1 int a 2,b ...

ArchSummit北京2014大會8大專題確認

秉承 側重業務場景,引領技術趨勢 開放競合,不忘初心 archsummit全球架構師峰會繼2012年和2014年分別在深圳舉行後,今年12月19 20日將首次來到北京,也作為對2014年國內it領域的年末收官 u0026 xd n u0026 xd n 現在大會已經開放報名,9月7日之前7折優惠,詳...

2023年工作生活大總結

2014年馬上就要結束,這裡來總結一下這一年的工作生活吧。生活是平平淡淡,工作如同過山車。生活 鍋碗瓢盆,油鹽醬醋。雖然不是大富大貴 帝王之家,但是小戶清貧,知足長樂。老婆不挑剔,老公心舒服。家庭和睦,夫妻相敬,生活何不樂哉。作為乙個程式設計師,沒有能力讓老婆過上衣來伸手 飯來張口的生活,但是對老婆...