帶有虛點的LCT BZOJ 4573 大森林

2021-08-08 20:27:23 字數 1736 閱讀 5508

要離線來做。

考慮最後一遍是按樹的編號順序一遍掃過。

所以就是要先把兩棵樹之間要改變的資訊都維護出來。

這道題是對生長節點建出乙個虛點。

就可以在多棵樹上同時連邊。

#include 

using

namespace

std;

const

int n = 404040;

inline

char get(void)

return *s++;

}inline

void read(int &x)

struct node *null;

struct node

inline

void pushup(void)

inline

void pushdown(void)

}inline

void new(int k)

};node *p;

node mem[1];

node t[n];

int n, m, opt, x, y, z, c1, cnt, lst, ocnt;

int l[n], r[n], to[n];

int ans[n];

struct option

inline

friend

bool

operator

<(const option &a, const option &b)

};option q[n];

inline

bool isroot(node *x)

inline

void rotate(node *x)

x->fa = z; y->fa = x; x->ch[r]->fa = y;

y->ch[l] = x->ch[r]; x->ch[r] = y;

y->pushup(); x->pushup();

}inline

void down(node *x)

inline

void splay(node *x)

rotate(x);

}}inline node *access(node *x)

return y;

}inline

void makeroot(node *x)

inline

void link(node *x, node *y)

inline

void cut(node *x, node *y)

inline

void cut(node *x)

void init(void)

int main(void) else

if (opt == 1)

} else

}for (int i = 1; i <= m; i++) ans[i] = -1;

sort(q + 1, q + ocnt + 1);

for (int i = 1, p1 = 1; i <= m; i++)

for (; p1 <= ocnt && q[p1].pos == i; p1++) else

}for (int i = 1; i <= m; i++)

if (~ans[i]) printf("%d\n", ans[i]);

return

0;}

帶有風的詩詞 帶有風字的詩句

帶有風字的詩句 1 昨夜秋風入漢關,朔雲邊月滿西山。嚴武 軍城早秋 2 夜來風雨聲,花落知多少。孟浩然 春曉 3 相見時難別亦難,東風無力百花殘。李商隱 無題 4 古道西風瘦馬,夕陽西下,斷腸人在天涯。馬致遠 天淨沙 秋思 5 大風起兮雲飛揚。劉邦 大風歌 6 忽如一夜春風來,千樹萬樹梨花開。岑參 ...

帶有驗證的soap webservice

這次介紹的是android呼叫.net的帶soapheader的webservice,布局檔案很簡單就乙個button,網上有很多教程講了android怎麼呼叫webservice,好像帶soapheader的很少 好吧。那就開始吧。首先我們需要乙個jar檔案 可以去網上搜ksoap2,我這裡用的是...

帶有繼承的Lombok Builder

3。superbuilder 和繼承 4。結論 lombok庫提供了一種無需編寫任何樣板 即可實現 builder pattern的好方法 builder https projectlombok.org features builder 注釋。在這個簡短的教程中,我們將專門學習涉及繼承時如何處理 b...