題意
:求a中
三個數a
i,aj
,ak,
ai⊕a
j⊕ak(
i<
j這裡要動態維護字典樹,每當輸入乙個數,就更新一下字典樹。最後減去i>j的情況(這裡最難懂),搞了好久,算是會了,手撕**時問題百出,還是沒有學到骨子裡,留下以後在複習。
參看了兩位大佬的部落格:
大佬部落格
小老部落格
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define ll long long
#define mem(a) memset(a,0,sizeof(a))
const
int eps=1e-8;
const
int maxn=5e7+5;//須填寫
const
int inf=0x3f3f3f3f;
struct node
}l[maxn];
int tot;
ll ans,cnt[32][2];
void add(int a,int len)
if(l[now].nxt[tmp^1]!=-1)//如果和k本位不同的數則進行計算
l[now].sum[tmp]+=cnt[i][tmp]-l[l[now].nxt[tmp]].v;//把此處的k當做i處理,尋找不符合要求的j,並記錄留用
cnt[i][tmp]++;
now=l[now].nxt[tmp];
l[now].v++;
}}int a[500010];
int b[40];
int main()
add(b,30);
}cout
0;}
初試01字典樹(求異或問題)
題目鏈結 一般01字典樹用來解決區間異或和之類的問題。異或的性質 1.交換律 2.結合律,即 a b c a b c 3.自反性,即x x 0 4.x 0 x 其中運用最多的就是自反性。有上述性質,對於區間異或和要知道如下性質 xor l,r xor 1,l 1 xor 1,r 在查詢最大異或值時我...
奶牛異或(01字典樹)
題意 讓你找乙個連續區間異或和最大,如果有相同的,則輸出斷點較小的。題解 01字典樹,利用字首和的思想進行求解,我們在插入字首的同時,也在不斷的更新最大值。我們查詢當前 二進位制字串與已經插入的 二進位制字串中的哪乙個異或和最大?找到最大的那個,讀取這個字首和是到誰結束的,來判斷是否要更新 keep...
字典樹 求異或的值最大
zeus 和 prometheus 做了乙個遊戲,prometheus 給 zeus 乙個集合,集合中包含了n個正整數,隨後 prometheus 將向 zeus 發起m次詢問,每次詢問中包含乙個正整數 s 之後 zeus 需要在集合當中找出乙個正整數 k 使得 k 與 s 的異或結果最大。prom...