抱佛腳...
首先想到查詢第k大的異或值可以按為確定,方法類似平衡樹查第k大
然後,就跑到字首和上去死磕了...
然而明明一顆可持久化trie樹就可以解決的...
然後n*p*32^2過了以後表示老夫怎麼這麼慢阿,,,於是發現別人是n*p*32的,每次記下來就好,不用再跑一遍的...
1 #include2view codeusing
namespace
std;
3#define mp make_pair
4#define fir first
5#define sec second
6#define maxn 1005
7#define maxm 300005
8#define maxnd 10000005
9#define maxl 32
10int
a[maxn],b[maxm];
11int nd,root[maxm],trie[maxnd][2
],mrk[maxnd];
12 pairat[maxn];
13int
read()
19void insert(int
pos)
29 mrk[x]=mrk[y]+1;30
}31int solve(int u,int d,int l,int r,int
k)41
if(cnt>=k)47}
48else54}
55}56return
ans;57}
58int
main()
66 q=read();
67for(int i=1;i<=q;i++)
71return0;
72 }
BZOJ4103 異或運算
time limit 20 sec memory limit 512 mb 給定長度為n的數列x 和長度為m的數列y 令矩陣a中第i行第j列的值aij xi xor yj,每次詢問給定矩形區域i u,d j l,r 找出第k大的aij。第一行包含兩個正整數n,m,分別表示兩個數列的長度 第二行包含n...
異或運算 有趣的異或運算
異或運算可以看做是沒有進製的加法,按位異或運算,相同為0,不同為1。0 0 0 0 1 1 1 0 1 1 1 0 觀察運算結果我們發現,當與0做異或運算時,另一元值不變 而與1做異或運算時,另一元值值取反。根據以上異或運算的特徵,可以有以下用途,除方便直觀外,運算效能也更加優異。1 變數重置0 假...
(與運算) (或運算) (異或運算)
即 兩個運算元同為 1 的時候為1 0 0 0 1 0 1 0 1 1 1 1 1 即 兩個運算元中至少有乙個為 1 的時候為1 0 0 0 0 1 1 1 0 1 1 1 0 即 兩個運算元不同的時候為1 運算規則 1 0 0 1 即 對乙個二進位制數按位取反,即將0變1,1變0。將乙個運算物件的...