51nod 1406 与查询
来源:互联网 发布:淘宝翡翠手把件真假 编辑:程序博客网 时间:2024/05/01 22:59
开始我是想着用记忆化搜索,没想好怎么去重,倒着推,可以去掉重复,不过确实不好想。比如一个数1011,先去掉开始的1,现在1011和0011都是1了,去掉第二个1,1001和0001都是1了,去掉第三个1,1011,1001,0001,1000,0000都是1了没有重复
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;int bin[25],n,f[1000005];int read(){ int x=0,f=1;char ch=getchar(); while (ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while (ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}void write(int x){ int a1=0,a[20]; a[1]=0; if (!x) a1++; while (x) { a[++a1]=x%10;x/=10; } for (int i=a1;i>=1;i--) putchar(a[i]+'0');}int main(){ bin[0]=1; for (int i=1;i<=20;i++) bin[i]=bin[i-1]*2; n=read(); for (int i=1;i<=n;i++) { int x=read(); f[x]++; } for (int i=20;i>=0;i--) for (int j=1;j<=1000000;j++) if (j&bin[i]) f[j^bin[i]]+=f[j]; for (int i=0;i<=1000000;i++) { write(f[i]); printf("\n"); // getchar(); } return 0;}
阅读全文
0 0
- 51Nod-1406-与查询
- 51nod-1406 与查询
- 51nod 1406 与查询
- 51nod 1406 与查询
- 51nod 1406 与查询 二进制+暴力
- 51 nod 1406 与查询(思维)
- 51nod 1406 与查询 类背包dp
- 51NOD 1210 矩阵查询
- 51nod 1407 与与与与
- 51nod 圆与三角形
- 51Nod - 1406 dp
- 51NOD 1210 矩阵查询 【线段树/树状数组】
- 51nod 1298 圆与三角形
- 51nod 1293:球与切换器
- 51Nod 1298 圆与三角形
- [51nod]1298 圆与三角形
- 51nod 1298 圆与三角形
- 51nod 1298 圆与三角形
- PAT (Advanced) 1013. Battle Over Cities (25)
- poj3463 Sightseeing(读题很重要)
- Java-集合(list接口)
- 最小排序(美团点评)
- LeetCode #532 K-diff Pairs in an Array
- 51nod 1406 与查询
- 02-线性结构4 Pop Sequence(25 分)
- struts2命名空间namespace和访问路径的关系
- java基础(二)之深入剖析volatile关键字
- rdhbygb
- 程序员的自我修养6
- CF Elementary Math【网络流】
- Sqoop1 导入与导出数据
- 继承与合成基本概念 继承:可以基于已经存在的类构造一个新类。继承已经存在的类就可以复用这些类的方法和域。在此基础上,可以添加新的方法和域,从而扩充了类的功能。 合成:在新类里创建原有的对象称为合成。