我们知道一个数S会对所有它的子集S'产生1的贡献,但是我们直接枚举子集是 3^(log2 1000000)的,会炸掉;如果直接把每个有1的位变成0往下推也会凉掉,因为这样会有很多重复的。

但是我们发现 第二种方法其实算的是 有序的路径方案数, 我们尝试把它变成无序的,贡献就正好是1了。

具体的说,我们在外层枚举位数,内层把所有这一位是1的数 给 把它这一位变成0的数 贡献,这样就是无序的了。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1000000;
int n,f[maxn*2+5],ci[35]; inline int read(){
int x=0; char ch=getchar();
for(;!isdigit(ch);ch=getchar());
for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';
return x;
} void W(int a){ if(a>=10) W(a/10); putchar(a%10+'0');} inline void dp(){
for(int i=0;i<20;i++)
for(int j=maxn;j;j--) if(j&ci[i]) f[j^ci[i]]+=f[j];
} inline void output(){
for(int i=0;i<=maxn;i++) W(f[i]),puts("");
} int main(){
ci[0]=1;
for(int i=1;i<=20;i++) ci[i]=ci[i-1]<<1;
n=read();
for(int i=1;i<=n;i++) f[read()]++;
dp();
output();
return 0;
}

  

最新文章

  1. OperateLoger
  2. 【原】iOS学习之Xcode8关于控制台不打印错误信息
  3. ThinkPHP学习遇到的点问题(学习中,持续更新)
  4. 有关TabBar的一些性质
  5. MVC中 _ViewStart _Layout Index三个页面中的加载顺序
  6. Andorid开发学习---ubuntu 12.04下搭建超好用的安卓模拟器genymotion 安装卸载virtualbox 4.3
  7. Ubuntu 14.04下NFS安装配置
  8. 微软发布屏蔽Win10升级的官方办法
  9. MATLAB light material lighting
  10. 关于C语言中的typedef
  11. Adobe Edge Animate –使用EdgeCommons加载和播放音频
  12. 用PhotoSwipe制作相册,手势可放大
  13. Luogu1074靶形数独【启发式搜索】
  14. 不吹不擂,你想要的Python面试都在这里了【315+道题】
  15. Navicat premium 破解步骤
  16. Java全栈程序员之09:IDEA+GitHub
  17. [c/c++] programming之路(24)、字符串(五)——字符串插入,字符串转整数,删除字符,密码验证,注意事项
  18. JProfiler的使用
  19. [NM]打开NetworkManager和wpa_supplicant的DEBUG接口
  20. 关于Unity的两种调试方法

热门文章

  1. Flask——蓝图
  2. graphviz layer 教程(非布局)
  3. 有趣的this以及apply,call,bind方法
  4. 【贪心 堆】luoguP2672 推销员
  5. redis集群理解
  6. free指令的说明
  7. GIMP语言设置
  8. Python操作12306抢票脚本
  9. Linux三剑客之sed详解(2)
  10. django第8天(在测试文件中运行django项目|单表操作)