題意:給定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還是...