博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 5119 Happy Matt Friends
阅读量:5019 次
发布时间:2019-06-12

本文共 1095 字,大约阅读时间需要 3 分钟。

http://acm.hdu.edu.cn/showproblem.php?pid=5119

题意:有n个数,然后从中挑选任意多的数进行异或,问异或出的值大于等于M的方案数多少?

思路:转移方程f[i][j]=f[i-1][j]+f[i-1][j^a[i]].  可以枚举这个值,对每个状态,来源有两个——一是上一个阶段不取,二是取a[i].

1 #include 
2 #include
3 #include
4 #define ll long long 5 #define maxn 50 6 using namespace std; 7 8 int t,n,m; 9 int a[maxn];10 ll dp[50][(1<<20)+10];11 12 int main()13 {14 scanf("%d",&t);15 for(int cas=1; cas<=t; cas++)16 {17 scanf("%d%d",&n,&m);18 memset(dp,0,sizeof(dp));19 for(int i=1; i<=n; i++)20 {21 scanf("%d",&a[i]);22 }23 dp[0][0]=1;24 for(int i=1; i<=n; i++)25 {26 for(int j=0; j<(1<<20); j++)27 {28 dp[i][j]=dp[i-1][j]+dp[i-1][j^a[i]];29 }30 }31 ll ans=0;32 for(int i=m; i<(1<<20); i++)33 {34 ans+=dp[n][i];35 }36 printf("Case #%d: %lld\n",cas,ans);37 }38 return 0;39 }
View Code

 

转载于:https://www.cnblogs.com/fanminghui/p/4229722.html

你可能感兴趣的文章
SetCapture ReleaseCapture
查看>>
DataGridView ——管理员对用户的那点操作
查看>>
POJ - 1185 炮兵阵地 (状态压缩)
查看>>
ios7 JavaScriptCore.framework
查看>>
算法6-5:哈希表应用之集合
查看>>
压力单位MPa、Psi和bar之间换算公式
查看>>
Moscow Pre-Finals Workshop 2016. National Taiwan U Selection
查看>>
程序员面试、算法研究、编程艺术、红黑树4大系列集锦与总结 .
查看>>
idea tomcat 配置
查看>>
冲刺第二天
查看>>
LeetCode 405. Convert a Number to Hexadecimal (把一个数转化为16进制)
查看>>
ASP.NET MVC 3–Global Action Filters
查看>>
OFFICE安装提示1935错误
查看>>
jva基础网络编程
查看>>
js 正计时和倒计时
查看>>
复合数据类型,英文词频统计
查看>>
you-get帮助使用手册
查看>>
nyoj756_重建二叉树_先序遍历
查看>>
sin()函数的实现
查看>>
图像切割之(一)概述
查看>>