HDU 5119 Happy Matt Friends(字典树)
来源:互联网 发布:视频广告过滤 知乎 编辑:程序博客网 时间:2024/05/29 15:27
思路:用字典树来统计异或和大于M的种数就行了
#include <bits/stdc++.h>using namespace std;typedef long long LL;const int N=1100010;const int INF=0x3f3f3f3f;const int maxc=2;const int BIT=21;int cas=1,T;int n,m,k[50],kk[50],half;int ch[N*20][maxc],si[N*20];void init(){memset(ch[0],0,sizeof(ch[0]));si[0]=1;}void insert(int s){int u=0;for(int i=BIT-1;i>=0;i--){int c=(s&(1<<i)?1:0);if(!ch[u][c]){memset(ch[si[0]],0,sizeof(ch[0]));si[si[0]]=0;ch[u][c]=si[0]++;}u=ch[u][c];si[u]++;}}int find(int s){int u=0,ans=0;for(int i=BIT-1;i>=0;i--){int c=(s&(1<<i)?1:0);if(m&(1<<i)){if(!ch[u][!c]) return ans;u=ch[u][!c];}else{if(ch[u][!c]) ans+=si[ch[u][!c]];if(!ch[u][c]) return ans;u=ch[u][c];}}return ans+si[u];}int main(){//freopen("1.in","w",stdout);//freopen("1.in","r",stdin);//freopen("1.out","w",stdout);scanf("%d",&T);while(T--){init();scanf("%d%d",&n,&m);half=n/2;int r=n-half;//printf("%d %d\n",half,r);for(int i=0;i<half;i++) scanf("%d",&k[i]);for(int i=0;i<r;i++) scanf("%d",&kk[i]);LL ans=0;for(int i=0;i< 1<<half;i++){int sum=0;for(int j=0;j<half;j++) if(i&(1<<j)) sum^=k[j];//printf("s:%d\n",sum);insert(sum);}for(int i=0;i< 1<<r;i++){int sum=0;for(int j=0;j<r;j++) if(i&(1<<j)) sum^=kk[j];//printf("sum:%d\n",sum);ans+=find(sum);}printf("Case #%d: %lld\n",cas++,ans);}//printf("time=%.3lf",(double)clock()/CLOCKS_PER_SEC);return 0;}
0 0
- HDU 5119 Happy Matt Friends(字典树)
- HDU 5119 Happy Matt Friends(DP)
- hdu 5119 Happy Matt Friends(dp)
- HDU - 5119 Happy Matt Friends(DP)
- HDU 5119 Happy Matt Friends(dp)
- HDU 5119 Happy Matt Friends(DP)
- HDU 5119 Happy Matt Friends(dp)
- hdu 5119 Happy Matt Friends
- HDU-5119-Happy Matt Friends
- HDU 5119 Happy Matt Friends
- HDU 5119 Happy Matt Friends
- hdu 5119 Happy Matt Friends
- HDU 5119 Happy Matt Friends
- Happy Matt Friends HDU
- HDU 5119 Happy Matt Friends (01背包)
- HDU 5119 Happy Matt Friends(递推+滚动数组)
- hdu 5119 Happy Matt Friends (背包,高斯消元)
- HDU--5119Happy Matt Friends+dp
- opencv3.0 FaceRecongnizer说明
- 对Android应用进行单元测试
- cqm题解报告04
- Linux入门之入手开发板与开发环境的搭建 2016.5.7
- Spring MVC 4 使用常规的fileupload上传文件(带源码)
- HDU 5119 Happy Matt Friends(字典树)
- hdu 4387 Stone Game
- The Accomodation of Students(二分图判断+匈牙利)
- C89标准和C99标准C11标准的区别
- 如何定义 Java 中的方法(二)
- 关于在Ubuntu下安装配置numpy,scipy,matplotlibm,pandas 以及sklearn
- Python3安装xlutils
- HDU 5120 Intersection(计算几何+容斥)
- 入门篇---作为一名菜鸟起飞的第一步,sqlite.lib编辑失败分析原因