簡化版題意:
在乙個陣列中找出 (s[i]+s[j])^s[k] 最大的值,其中 i、j、k 各不相同。
這個題目我們就不能直接套用模板了,問題出在**?是因為i、j、k不能相同,所以直接查詢tire樹會出現問題。怎麼辦?乙個很直觀的想法是刪除。對k建trie樹,列舉i、j,然後將i、j在trie樹中刪除。
考慮如何刪除,我們用乙個num陣列記錄每乙個結點出現的次數(注意是每乙個結點而不是結尾的結點,因為如果i,j兩個位置的數字不能使用,那麼在tire樹上所有關於他的結點都不能使用),在每次insert的時候增加num,在每次刪除的時候減少num,在最後查詢的時候判斷num是否為0代表當前樹上這個結點是否可以使用。說到這裡,這個題的大致思路就說完了,下面直接上**。
#include#include#include#include#include#define mk(a,b) make_pair(a,b)
#define ll long long
#define n 1010
using namespace std;
ll tot,ch[n*32][3],val[n*32],num[n*32],t,a[n];
void init()
void insert(ll x)
u=ch[u][v];
num[u]++;
} val[u]=x;
}void del(ll x,ll add)
}ll query(ll x)
return x^val[u];
}int main()
for(ll i=1;i<=n;i++)
for(ll j=i+1;j<=n;j++)
printf("%lld\n",ans);
} return 0;
}
動物統計加強版(字典樹)
時間限制 3000 ms 記憶體限制 150000 kb 難度 4 描述 在美麗大興安嶺原始森林中存在數量繁多的物種,在勘察員帶來的各種動物資料中有未統計數量的原始動物的名單。科學家想判斷這片森林中哪種動物的數量最多,但是由於資料太過龐大,科學家終於忍受不了,想請聰明如你的acmer來幫忙。輸入 第...
字典樹 與 01字典樹
字典樹可以降低空間複雜度 01字典樹可以降低時間複雜度。字典樹 又稱單詞查詢樹,trie樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的字串 但不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是 利用字串的公共字首來減少查詢時間,最大限度地減少無謂的字串比較...
01字典樹 小結
為了做13年南京網路賽的一道題 學了這個01字典樹 看了別人的模板 之後切了幾道水題 現在總結一下 01字典樹的實現可以看成是把乙個數的二進位制字元化後插入到一顆一般的字典樹中 比如在01字典樹種插入3時 相當於在字典樹中插入00 00011 一共33為,這個根據具體實現不同 查詢最大異或值的時候我...