01字典樹 之 求樹上最長異或路徑

2021-09-26 20:41:54 字數 557 閱讀 4530

題目描述

給定一棵 n 個點的帶權樹,結點下標從 1 開始到 n 。尋找樹中找兩個結點,求最長的異或路徑。

異或路徑指的是指兩個結點之間唯一路徑上的所有邊權的異或。

洛谷:4551  最長異或路徑

思路,首先dfs處理出每個點到 根 的距離

然後將這些距離存在字典樹中,然後對於每個距離查詢字典樹,得到最優值

注意:字典樹一維空間大小。

#includeusing namespace std;

const int m=1e5+50;

struct nodee[m<<1];

int n,head[m<<1],res,tot,cnt,t[m*35][5],xo[m];

void add(int x,int y,int v)

void dfs(int x,int fa)

}void build(int x)

}int query(int x)

return ans;

}int main()

奶牛異或(01字典樹)

題意 讓你找乙個連續區間異或和最大,如果有相同的,則輸出斷點較小的。題解 01字典樹,利用字首和的思想進行求解,我們在插入字首的同時,也在不斷的更新最大值。我們查詢當前 二進位制字串與已經插入的 二進位制字串中的哪乙個異或和最大?找到最大的那個,讀取這個字首和是到誰結束的,來判斷是否要更新 keep...

最長異或值路徑 字典樹應用

任何新型別的題,都可以轉換成自己熟悉的題來解答。就像下面的這題 給定乙個樹,樹上的邊都具有權值。樹中一條路徑的異或長度被定義為路徑上所有邊的權值的異或和 為異或符號。給定上述的具有n個節點的樹,你能找到異或長度最大的路徑嗎?輸入格式 第一行包含整數n,表示樹的節點數目。接下來n 1行,每行包括三個整...

COJ 1216 異或最大值 01字典樹

題意 求n個非負數中任意2個的異或值的最大值。n數量級為10 5 分析 直接暴力肯定超時了。乙個非負整數可以看成1個32位的01字串,n個數可以看成n個字串,因此可以建立字典樹,建好樹後,對於任意非負整數x,可以沿著樹根往下貪心找到y,使得x異或y最大,複雜度為樹的深度。view code incl...