PAT甲級 LCA專題複習

2021-10-07 23:52:32 字數 442 閱讀 4485

這個部分在《演算法筆記》是沒有的。

這種新背景的題目,如果之前沒有接觸過,那只能從普通的定義去解,即:

1.建樹

2.找祖先,找到一致的就是最低公共祖先

例子:hihocoder - 1062 、 

二叉樹的公共父結點

但是如果之前接觸過,就能立即從遞迴的原理解:

假設要查詢lca的結點:

1.是父子,父節點就是lca

2.在目前根的左右,則目前的根就是lca

3.目前在根的同一側,則目前的根設為該側的子節點,繼續遞迴

真題:樹、lca

18秋第四題

1151

lca in a binary tree (30分)

樹、bst、lca

17冬第四題

1143

lowest common ancestor(30分)

倍增LCA複習

時間過去了如此之久,我連倍增lca都不怎麼記得了,要粗事啊。首先預處理層數和每個節點的父親,然後預處理p陣列,p i,j 表示i向上第2 j個祖先。最後對於每個詢問x,y先把x,y變成同一層數的 x或y向上走直到兩個層數相等 然後x,y同時向上走,直到x和y的父親相同位置。自 1.dfs預處理出所有...

浙大pat甲級 1024

可用3個vector來進行處理,先將輸入的數字都壓入到第1第2個vector中,從i 0到k迴圈判斷是否為對稱數,如果不是對稱數則將其與倒轉數相加,並將得到的每一位數加入到第三個vector的頭部,並將新的第三個vector重新賦值給第一第二,直到該數為對稱數或i k結束迴圈。ac include ...

浙大PAT甲級 1039

一開始想到用map 但是會超時。由於題目中的名字由三個字母和乙個數字組成,因此有26 26 26 10種,因此可以用hash來做。使用setmm max max 26 26 26 10 5 同時輸入名字時也應改為char s 5 scanf來輸入。ac include include include...