三点间LCA
三點(diǎn)間LCA
?
1.直接上題——jzoj5883. 【NOIP2018模擬A組9.25】到不了
Dscription
wy 和 wjk 是好朋友。
今天他們?cè)谝黄鹆奶?#xff0c;突然聊到了以前一起唱過(guò)的《到不了》。
“說(shuō)到到不了,我給你講一個(gè)故事吧。”
“嗯?”
“從前,神和凡人相愛(ài)了,憤怒的神王把他們關(guān)進(jìn)了一個(gè)迷宮里,迷宮是由許多棵有根樹(shù)組 成的。神王每次把兩個(gè)人扔進(jìn)其中的某一棵有根樹(shù)里面,兩個(gè)相鄰節(jié)點(diǎn)的距離為 1,兩人的 每一步都只能從兒子走到父親,不能從父親走到兒子,他們約定,走到同一個(gè)節(jié)點(diǎn)相見(jiàn),由 于在迷宮里面行走十分消耗體力,他們決定找出那個(gè)使得他們走的總路程最少的節(jié)點(diǎn),他們 當(dāng)然會(huì)算出那個(gè)節(jié)點(diǎn)了,可是神王有時(shí)候會(huì)把兩棵有根樹(shù)合并為一棵,這下就麻煩了。。。”
“唔。。。”
[已經(jīng)了解樹(shù),森林的相關(guān)概念的同學(xué)請(qǐng)?zhí)^(guò)下面一段]
樹(shù):由 n 個(gè)點(diǎn),n-1 條邊組成的無(wú)向連通圖。
父親/兒子:把樹(shù)的邊距離定義為 1,root 是樹(shù)的根,對(duì)于一棵樹(shù)里面相鄰的兩個(gè)點(diǎn) u,v,到 root 的距離近的那個(gè)點(diǎn)是父親,到 root 距離遠(yuǎn)的那個(gè)點(diǎn)是兒子
森林:由若干棵樹(shù)組成的圖
[簡(jiǎn)化版題目描述]
維護(hù)一個(gè)森林,支持連邊操作和查詢(xún)兩點(diǎn) LCA 操作
Input
第一行一個(gè)整數(shù) N,M,代表森林里的節(jié)點(diǎn)總數(shù)和有根樹(shù)的數(shù)目。
第二行 M 個(gè)整數(shù),第 i 個(gè)整數(shù) ri 代表第 i 棵有根樹(shù)的根是編號(hào)為 ri 的節(jié)點(diǎn)
接下來(lái) N-M 行,每行兩個(gè)整數(shù) u,v 表示 u 和 v 相鄰
接下來(lái)一行一個(gè)整數(shù) Q,表示 Q 個(gè)事件發(fā)生了
接下來(lái) Q 行,每行若干個(gè)整數(shù),表示一個(gè)事件
如果第一個(gè)數(shù) op=1,接下來(lái)兩個(gè)整數(shù) u,v,代表神王把 u 號(hào)節(jié)點(diǎn)所在的樹(shù)和 v 號(hào)節(jié)點(diǎn)所在的樹(shù) 合并到一起(即 u 到 v 連了一條邊),新的根為原來(lái) u 號(hào)節(jié)點(diǎn)所在的樹(shù)的根(如果 u,v 已經(jīng)聯(lián)通, 忽略這個(gè)事件)。
如果第一個(gè)數(shù) op=2,接下來(lái)兩個(gè)整數(shù) u,v,代表一次詢(xún)問(wèn),當(dāng)一個(gè)人在 u 號(hào)節(jié)點(diǎn),一個(gè)人 在 v 號(hào)節(jié)點(diǎn),詢(xún)問(wèn)他們找到的那個(gè)節(jié)點(diǎn)的編號(hào)
Output
對(duì)于每一個(gè)詢(xún)問(wèn)(op=2 的操作),輸出一行一個(gè)整數(shù),代表節(jié)點(diǎn)編號(hào),如果 u,v 不聯(lián)通,輸 出 orzorz。
Sample Input
【樣例 1】
2 2
1 2
2
1 1 2
2 1 2
【樣例 2】
2 2
1 2
2
1 2 1
2 1 2
Sample Output
【樣例 1】
1
【樣例 2】
2
Data Constraint
對(duì)于 30%的數(shù)據(jù) 1 ≤ N ≤ 1000 1 ≤ Q ≤ 1000
對(duì)于 100%的數(shù)據(jù) 1 ≤ N ≤ 100000 1 ≤ Q ≤ 100000
?
2.1Solution
顯然可以LCT吧,這里不再撰述。
?
2.2Solution
通過(guò)歸納證明我們發(fā)現(xiàn):
這一問(wèn)題其實(shí)就是在求三點(diǎn)間。
顯然三點(diǎn)間并不是依次后的結(jié)果。
?
- 結(jié)論:
- 證明:歸納證明易得(非要看證明請(qǐng)見(jiàn)這位學(xué)長(zhǎng)的博客:詳細(xì)的歸納證明)。
所以此題就很容易地用并查集解決了。?
總結(jié)
- 上一篇: 余额宝的钱怎么转到微信
- 下一篇: 文件快速输入输出