题面:http://uoj.ac/problem/300

一道大水题,然而我并不知道$lucas$定理的推论。。

$\binom{n}{m}$为奇数的充要条件是$n&m=n$。那么我们对于每个数,直接枚举子集转移就行了,复杂度是$O(3^{18})$,不会$T$。

 //It is made by wfj_2048~
#include <algorithm>
#include <iostream>
#include <complex>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <vector>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#define rhl (1000000007)
#define inf (1<<30)
#define N (300010)
#define il inline
#define RG register
#define ll long long
#define File(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout) using namespace std; int f[N],a[N],b[N],n,ans; il int gi(){
RG int x=,q=; RG char ch=getchar();
while ((ch<'' || ch>'') && ch!='-') ch=getchar();
if (ch=='-') q=-,ch=getchar();
while (ch>='' && ch<='') x=x*+ch-,ch=getchar();
return q*x;
} il void work(){
n=gi(); for (RG int i=;i<=n;++i) a[i]=gi(),b[a[i]]=i;
for (RG int i=;i<=n;++i){
ans+=(f[i]++); if (ans>=rhl) ans-=rhl;
for (RG int s=a[i];s;s=(s-)&a[i])
if (b[s]>i){ f[b[s]]+=f[i]; if (f[b[s]]>=rhl) f[b[s]]-=rhl; }
}
printf("%d\n",ans); return;
} int main(){
File("gift");
work();
return ;
}

最新文章

  1. Laravel Composer and ServiceProvider
  2. java回调初步学习
  3. Redis常用命令入门3:列表类型
  4. SQLAlchemy 几种查询方式总结
  5. 由ArrayList构造函数源码引出的问题
  6. 能用Shell就别编程-海量文本型数据的处理
  7. Oracle11g中ORA-01790
  8. Ruby Regexp
  9. paip. mysql如何临时 暂时 禁用 关闭 触发器
  10. lucene 实现word,pdf全文检索源码
  11. C#调用API函数EnumWindows枚举窗口的方法
  12. Node.js入门-Node.js 介绍
  13. CF 332A Down the Hatch! 超级水题。。不过题目太长了
  14. 20ms Ac Code
  15. node c++多线程插件 第二天 c++指针
  16. [51nod1297]管理二叉树
  17. ubuntu14.04 64位 安装Tomcat
  18. Python内置函数(45)——ascii
  19. LeetCode_406. Queue Reconstruction by Height解题思路
  20. Java 四种引用介绍及使用场景

热门文章

  1. 【异步编程】Part3:取消异步操作
  2. Spring征服数据库
  3. BZOJ1057(单调栈 or 悬线法)
  4. js弹框怎么获得父页面的元素
  5. Spring中的注入方式 和使用的注解 详解
  6. PHP是.NET上的一门开发语言
  7. 将JWT与Spring Security OAuth结合使用
  8. SpringMVC简介01
  9. 【踩坑】List 的陷阱
  10. I/O流操做总结(三)