?
题意:
给定n个数,求从中选出任意个数异或起来值大于m的方案数。
?
分析:
动态规划,设dp[i][j] 表示第几次选第i个数的时候异或起来
值为j的方案数。dp[i][j^a[i]]+=dp[i][j];但是对空间有要求
我们可以用滚动数组来写。
?
代码如下:
#include
#include
#include
using namespace std; const int maxn = 1<<20; typedef long long LL; LL dp[2][maxn]; int a[50]; int main() { int t,n,m,cas=1; scanf(%d,&t); while(t--){ scanf(%d%d,&n,&m); for(int i=0;i
?