問題 G 點的距離

2021-09-25 18:14:03 字數 1370 閱讀 4308

問題

g: 點的距離

時間限制

: 5 sec  

記憶體限制

: 128 mb

提交: 57  

解決: 19

[提交][狀態

][討論版

][命題人

:add_lm

][edit

] [testdata]

題目描述

給定一棵有

n個結點的樹,

q個詢問,每次詢問點x到點

y亮點之間的距離 輸入

第一行乙個

n,表示有

n個節。

接下來有

n-1行,每行

2個整數x,

y表示x,

y之間有一條連邊。

然後乙個整數

q,表示有

q次詢問,接下來

q行每行

2個整數x,

y表示詢問x到

y的距離。 輸出

輸出q行,每行表示每個詢問的結果

樣例輸入

6

1 21 3

2 42 5

3 62

2 65 6

樣例輸出

3

4

思路:裸的倍增求lca的題目

**:

#includeusing namespace std;

const int maxn = 4e5 + 5;

int dep[maxn];

int first[maxn], next[maxn * 2], v[maxn * 2], num_edge;

int fa[maxn];

int st[maxn][25];

void ins(int x, int y)//建邊

void dfs(int x, int fa)//無向圖中需要記錄父節點防止死迴圈

}int get_lca(int x, int y)

}//若此時兩者節點相同,說明y就是x和y的公共祖先

if (x == y)

//一起往上跳

for (int i = 20; i >= 0; i--)

}//公共祖先就是其父節點

return  st[x][0];

}int main()

dfs(1, 0);

for (int i = 1; i <= n; i++)st[i][0] = fa[i];//建立st表

for (int i = 1; i <= 20; i++)

}int q;

scanf("%d", &q);

while (q--)

}}

G 編輯距離

author 夜楓 編輯距離,又稱levenshtein距離 也叫做edit distance 是指兩個字串之間,由乙個轉成另乙個所需的最少編輯操作次數。許可的編輯操作包括將乙個字元替換成另乙個字元,插入乙個字元,刪除乙個字元。例如將kitten一字轉成sitting sitten k s sitt...

lca 點的距離

給定一棵有n個結點的樹,q個詢問,每次詢問點x到點y亮點之間的距離 第一行乙個n,表示有n個節。接下來有n 1行,每行2個整數x,y表示x,y之間有一條連邊。然後乙個整數q,表示有q次詢問,接下來q行每行2個整數x,y表示詢問x到y的距離。輸出q行,每行表示每個詢問的結果 6 1 21 3 2 42...

平面最近點距離問題 分治法

演算法 0 把所有的點按照橫座標排序 1 用一條豎直的線l將所有的點分成兩等份 2 遞迴算出左半部分的最近兩點距離d1,右半部分的最近兩點距離d2,取d min d1,d2 3 算出 乙個在左半部分,另乙個在右半部分 這樣的點對的最短距離d3。4 結果 min d1,d2,d3 關鍵就是這第3步。貌...