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\)最优

posted @ 2020-05-27 20:17  Grice  阅读(120)  评论(0编辑  收藏  举报