現有一棵樹。您需要寫乙個樹上倍增演算法,以實現如下操作:
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 保證每個點至多是乙個傳送門的入口。如果傳送門最終傳送到障礙物上,那麼將會卡...