解題關鍵:01字典樹模板,用字典樹儲存每個數的二進位制表示,從而動態維護區間上的最大異或值,注意新增和刪除都可以用於乙個change函式表示。
複雜度:$o(n\log n + \log n)$
1 #include2#define maxn 1005
3#define inf 0x3f3f3f3f
4using
namespace
std;
5 typedef long
long
ll;6
inta[maxn];
7int num[32*maxn][2];8
int node[32*maxn][2];9
int val[32*maxn];
10int
sum,ans,l,r,anss,s;
1112
void
init()
1920
void change1(int m,int
x)31
}32 val[pos]=x;33}
3435
int search1(int l,int r,int
x)45
else pos=node[pos][j];46}
47if(w>ans) ans=w,l=l,r=r,anss=val[pos];48}
4950
intmain()
6566
for(int j=i;j<=n;j++) change1(1
,a[j]);67}
68 cout<"
"<"
"<"
"69}
70 }
01 字典樹模板 求XOR最大值
大致題目 有一n個數,給定一些詢問,每次詢問乙個數,問這n個數中與詢問的這個數xor起來最大的那個數是多少.或者與這n個數中異或起來的最大值是多少 等等 相當於求取兩個數異或起來的最大值是多少,這樣就可以暴力乙個,01字典樹找另外乙個 思想 主要是從乙個二進位制位上面去考慮這個問題,因為兩個數異或起...
字典樹 與 01字典樹
字典樹可以降低空間複雜度 01字典樹可以降低時間複雜度。字典樹 又稱單詞查詢樹,trie樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的字串 但不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是 利用字串的公共字首來減少查詢時間,最大限度地減少無謂的字串比較...
01字典樹 之 求樹上最長異或路徑
題目描述 給定一棵 n 個點的帶權樹,結點下標從 1 開始到 n 尋找樹中找兩個結點,求最長的異或路徑。異或路徑指的是指兩個結點之間唯一路徑上的所有邊權的異或。洛谷 4551 最長異或路徑 思路,首先dfs處理出每個點到 根 的距離 然後將這些距離存在字典樹中,然後對於每個距離查詢字典樹,得到最優值...