HDU 3949 XOR(求異或值第k小)

2021-08-28 23:45:21 字數 1009 閱讀 3831

題意:給定n個數,q次查詢,詢問第k小的異或值。

題目思路:線性基模板題,注意0是否可取,如果cnt==n,說明每個數對線性基都有貢獻,則不可能取到0,直接輸出第k小即可,否則要算上0。

ac**:

#include#include#include#include#include#include#include#include#include#includeusing namespace std;

#define fou(i,x,y) for(int i=x;i<=y;i++)

#define fod(i,x,y) for(int i=x;i>=y;i--)

#define mem(a,val) memset(a,val,sizeof(a))

#define pi acos(-1.0)

const double exp = 1e-9;

typedef long long ll;

typedef unsigned long long ull;

const int inf = 0x3f3f3f3f;

const ll minf = 0x3f3f3f3f3f3f3f3f;

const double dinf = 0xffffffffffff;

const int mod = 1e9+7;

const int n = 1e6+5;

//線性基

struct l_b

bool ins(ll val)

ll query_max()

ll query_min()

//以下**為求第k大異或值

void rebuild()

int main()

lb.rebuild();

scanf("%d",&q);

while(q--)

else

printf("%lld\n",lb.kthquery(x));}}

return 0;

}

hdu 3949 XOR 線性基 第k小異或和

給定 n 個數,對其每乙個子集計算異或和,求第 k 小的異或和。先求得線性基。同上題,轉化為求其線性基的子集的第k小異或和。記 n 個數的線性基為向量組 b 有b i p i 1,p 1 lt p 2 lt lt p t 記 k 的二進位制表示為向量 vec 則第 k 小異或和為 oplus i 1...

hdu3949 XOR 線性基求xor第k小

題目大意 求xor所有值的第k小,線性基模板題。include include include include include include using namespace std typedef long long ll const int max base 63 ll base 64 a 10...

線性代數 hdu 3949 XOR

題意 給你n個數,要你從中取出若干個進行異或運算,求最後所有可以得到的異或結果中的 第k小的異或值。n 10 18 這個題是用來研究xor性質的一道好題。首先我們可以暴力地找出些規律,我們發現不管拿出多少個數,他們能xor到的數,出現的次數都是一樣的,並且都是2的倍數。事實上,我們不論用原數ai還是...