博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeForces - 449D Jzzhu and Numbers
阅读量:5166 次
发布时间:2019-06-13

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

Discription

Jzzhu have n non-negative integers a1, a2, ..., an. We will call a sequence of indexes i1, i2, ..., ik(1 ≤ i1 < i2 < ... < ik ≤ n) a group of size k.

Jzzhu wonders, how many groups exists such that ai1 & ai2 & ... & aik = 0 (1 ≤ k ≤ n)? Help him and print this number modulo 1000000007 (109 + 7). Operation x & y denotes bitwise AND operation of two numbers.

Input

The first line contains a single integer n (1 ≤ n ≤ 106). The second line contains n integers a1, a2, ..., an(0 ≤ ai ≤ 106).

Output

Output a single integer representing the number of required groups modulo 1000000007 (109 + 7).

Examples
Input
3 2 3 3
Output
0
Input
4 0 1 2 3
Output
10
Input
6 5 2 0 5 2 1
Output
53     很明显的套路题。     我们可以用类似FMT的方法让所有a[]的子集的cnt++,然后统计出对于每种集合 i 的f[i],即选出一堆数and的集合包含i的方案数。     显然f[i] = 2^cnt[i] - 1。     然后直接容斥就行了2333
#include
#define ll long longusing namespace std;const int maxn=1000005,ha=1e9+7;inline int add(int x,int y){ x+=y; return x>=ha?x-ha:x;}inline void ADD(int &x,int y){ x+=y; if(x>=ha) x-=ha;}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;}int ci[maxn],n,f[maxn],ans,b[maxn];inline void solve(){ for(int i=0;i<=20;i++) for(int j=1;j<=1e6;j++) if(ci[i]&j) f[j^ci[i]]+=f[j]; for(int i=0;i<=1e6;i++) ADD(ans,b[i]?add(ci[f[i]],ha-1):add(ha-ci[f[i]],1));}int main(){ n=read(); ci[0]=1; for(int i=1;i<=1e6;i++) ci[i]=add(ci[i-1],ci[i-1]); b[0]=1; for(int i=1;i<=1e6;i++) b[i]=b[i^(i&-i)]^1; for(int i=1;i<=n;i++) f[read()]++; solve(); printf("%d\n",ans); return 0;}

 

 

转载于:https://www.cnblogs.com/JYYHH/p/9191115.html

你可能感兴趣的文章
理解裸机部署过程ironic
查看>>
Django 组件-ModelForm
查看>>
zabbix 二 zabbix agent 客户端
查看>>
大数据分析中,有哪些常见的大数据分析模型?
查看>>
Generate SSH key
查看>>
URL中不应出现汉字
查看>>
SSH框架面试总结----1
查看>>
如何防止Arp攻击
查看>>
ClassList 标签的用法
查看>>
小细节:Java中split()中的特殊分隔符 小数点
查看>>
【编程思想】【设计模式】【行为模式Behavioral】中介者模式Mediator
查看>>
后端接口时间戳或者随机数的作用
查看>>
IOS越狱环境搭建
查看>>
tomcat docBase 和 path
查看>>
java默认语法、EL、JSTL表达式,JSTL和struts Tag标签的使用总结
查看>>
复杂度分析
查看>>
Vue笔记:使用 axios 发送请求
查看>>
富文本编辑器 - RichEditor
查看>>
LintCode刷题笔记-- Count1 binary
查看>>
java webcontroller访问时报415错误
查看>>