BZOJ4103 異或運算

2022-08-22 15:57:11 字數 921 閱讀 8556

抱佛腳...

首先想到查詢第k大的異或值可以按為確定,方法類似平衡樹查第k大

然後,就跑到字首和上去死磕了...

然而明明一顆可持久化trie樹就可以解決的...

然後n*p*32^2過了以後表示老夫怎麼這麼慢阿,,,於是發現別人是n*p*32的,每次記下來就好,不用再跑一遍的...

1 #include2

using

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 }

view code

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。將乙個運算物件的...