首页 > 代码库 > HDU 5199
HDU 5199
被一个学长逼着做的题。。。谢谢他了~ 题中dp[i][j] i即为第i个数,j为当前输入的数能xor到的数
同时一个数有两种选择,1.not xor 2.xor
最大的j不会超过11...11b(20个)=1048575 题目中用了1050000
1 #include <stdio.h> 2 #include <string.h> 3 #define MM 50 4 __int64 dp[MM][1050000]; 5 int num[MM]; 6 int main() 7 { 8 int n,m,t,j,i; 9 scanf("%d",&t);10 for(int cas=1;cas<=t;cas++)11 {12 __int64 ans=0;13 memset(dp,0,sizeof (dp));14 15 scanf("%d %d",&n,&m); 16 dp[0][0]=1;17 for( i=1;i<=n;i++)18 {19 scanf("%d",&num[i]);20 }21 for(i=1;i<=n;i++)22 {23 for(j=0;j<1050000;j++)24 {25 dp[i][j]+=dp[i-1][j]; //not xor26 long long nj=j^num[i];27 dp[i][nj]+=dp[i-1][j]; //xor28 }29 }30 for(i=m;i<1050000;i++)31 {32 ans+=dp[n][i];33 }34 35 printf("Case #%d: %I64d\n",cas,ans );36 37 }38 return 0;39 }
HDU 5199
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。