jzoj5999
题意
给定\(n\)个数字\(a_i\)及\(s\),要求无序选择\(k\)个,\(b_1\oplus b_2\oplus ...\oplus b_k=s\)。\(a_i\le 5\times 10^4,n\le 10^6,k\le 4\)
做法
令\(g_i\)为gcd为\(i\)的方案数
\(ans=\sum\limits_{i=1}^V ig_i\)
令\(f_i\)为gcd为\(i\)的倍数的方案数
则\(ans=\sum\limits_{i=1}^V \phi(i)f_i\)
可以钦定一个阀值\(m\)
当\(i\le m\)时有效值较多,fwt,较小时折半暴力
有些细节,容斥一下
\(O(mVlogV),O(\sum\limits_{i=m+1}^V (\frac{V}{i})^2)\)
积分一下,可以求出\(m\)大概取\(50\)最优