B20J 5165 樹上倍增

2022-03-17 10:42:27 字數 817 閱讀 5946

現有一棵樹。您需要寫乙個樹上倍增演算法,以實現如下操作:

a x 新建乙個節點,將它作為x節點的兒子,編號為當前節點總數+1。

q k p1 p2 p3.... 查詢p1,p2,p3...這些節點的lca。其中k表示查詢節點的個數。

最初樹上只有乙個節點,編號為1。 

多個節點的lca定義為:這些節點的公共祖先中深度最大的。

第一行,乙個正整數,表示操作個數。 

接下來行,每行輸入乙個操作,格式如題目描述所述。

保證任何輸入的數都是正整數。

n≤3000000 k≤1000。

保證詢問不超過1000次

對於每乙個q操作,輸出一行乙個正整數,表示所詢問節點的lca。

10a 1

a 2a 3

a 1a 5

a 5q 2 3 6

q 2 6 7

q 2 4 2

q 3 7 6 515

25如題目 : 樹上倍增

#include #include #include #include using namespace std;

const int n = 3000001;

int _, f[21][n], __, dep[n];

inline char nc()

int rd()

char gc()

int lca(int x, int y)

return f[0][x];

}int main()

} else

printf("%d\n", x);

} }}

B20J 4027 HEOI2015 兔子與櫻花

b20j 4027 heoi2015 兔子與櫻花 樹形dp 題意 很久很久之前,森林裡住著一群兔子。有一天,兔子們突然決定要去看櫻花。兔子們所在森林裡的櫻花樹很特殊。櫻花樹由n個樹枝分叉點組成,編號從0到n 1,這n個分叉點由n 1個樹枝連線,我們可以把它看成乙個有根樹結構,其中0號節點是根節點。這...

5 16 兩個有序鍊錶序列的交集 20分

已知兩個非降序鍊錶序列s1與s2,設計函式構造出s1與s2的交集新鍊錶s3。輸入格式 輸入分兩行,分別在每行給出由若干個正整數構成的非降序序列,用 1 1表示序列的結尾 1 1不屬於這個序列 數字用空格間隔。輸出格式 在一行中輸出兩個輸入序列的交集序列,數字間用空格分開,結尾不能有多餘空格 若新鍊錶...

2020藍橋杯 B組 J迷宮 (bfs)

有乙個 n mn times mn m 的迷宮,其中 表示空地,表示障礙物。除此之外,有 qqq 個單向傳送門 如果進入格仔 ai,bi a i,b i ai bi 那麼會被立即傳送到 ci,di c i,d i ci di 保證每個點至多是乙個傳送門的入口。如果傳送門最終傳送到障礙物上,那麼將會卡...