異或最大值,考慮線性基;樹上路徑問題,考慮點分治
於是不難得到,在某一次分治的時候,處理lca為當前根的所有詢問。具體地,求出每個點到當前根的線性基,然後對於一對點,暴力合併兩個線性基(也就是兩個向量組的並集的極大無關組等於兩個向量組的極大無關組的並集的極大無關組)即可
這道題目顯然使用貪心構造線性基更easy(關於貪心構造線性基,在insert
函式中判斷插入的數是否為\(0\),如果為\(0\)直接返回可以極大提升程式碼效率,一個卡常trick)
注意時間複雜度,考慮處理每個詢問的時候,每一層的時間複雜度是\(O(q)\)的,相當於會把每個詢問走一遍,別認為每個詢問會走很多次然後就認為TLE了
還有注意特判\(x=y\)的情況。樹這題不用特判\(x=y\)是因為這種不符合題意
洛谷題解還有線上的做法,可以學一下