传送门 

Solution

输入一个长度为n的数列,求有多少个长度大等于2的不上升子序列满足:

\[\prod_{i=2}^{k} C(a_{b_{i-1}},a_{b_i}) mod\ 2 >0
\]

答案对1e9+7取模

根据Lucas定理:

\[C\ (n,\ m)\ ≡\ C\ (\frac{n}{p},\frac{m}{p})*\ C\ (n\%p,\ m\%p)\ (mod\ p)
\]

可以发现,只要满足m是n的子集,或者说是(n&m)=m即可。

f[i]表示从\(a_i\)开始的序列的数量,转移时枚举 \(a_i\)的子集,要判断一下它出现的位置是否在i之后

因为我们的\(a_i\)时互不相同的,所以,复杂度大概是\(O(3^{\log \max a_i})\)

写博客的真实原因其实是,pac弱到连枚举子集都不会

#include<bits/stdc++.h>
#define ll long long
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
#define swap(x,y) (x^=y^=x^=y)
inline 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<<3)+(x<<1)+ch-'0';ch=getchar();}
return x*f;
}
#define MN 211990
#define MM 233335
#define mod 1000000007
int a[MN],pos[MM],f[MN];
int n,ans;
inline void add(int &x,int y){x+=y;x>=mod?x-=mod:0;}
int main()
{
n=read();
register int i,j;
for(i=1;i<=n;++i) a[i]=read(),pos[a[i]]=i;
for(i=n;i;--i)
{
f[i]=1;
for(j=a[i]&(a[i]-1);j;j=a[i]&(j-1))
if(pos[j]>i) add(f[i],f[pos[j]]);
add(ans,f[i]);
}
add(ans,mod-n);
printf("%d\n",ans);
return 0;
}

所以呢,如何枚举子集?

for(i=S;i&=S;--i)

Blog来自PaperCloud,未经允许,请勿转载,TKS!

最新文章

  1. android快捷开发之Retrofit网络加载框架的简单使用
  2. [Linux编程] module_param()函数学习笔记
  3. mac 日式键盘反斜线\
  4. Windows Azure Cloud Service (42) 使用Azure In-Role Cache缓存(1)Co-located Role
  5. mysql常用表/视图管理语句
  6. PAT (Basic Level) Practise:1038. 统计同成绩学生
  7. 上海SAP代理商 服装行业ERP系统 达策SAP金牌代理商
  8. java事务的处理
  9. TransmitFile下载文件(部分转载)
  10. IIS MIME类型问题(html5 video 本地打开可以,IIS打开不了)
  11. 【C++】类型转换
  12. Arbitrage HDU
  13. Method &quot;setAge&quot; failed for object action.RegistAction@1f05562b [java.lang.No....
  14. MVC中使用AuthorizeAttribute做身份验证操作【转】
  15. 如何内网搭建NuGet服务器
  16. 1.JAVA-Hello World
  17. Create Maximum Number
  18. Java 多线程 ReadWriteLock
  19. Python开发之日志记录模块:logging
  20. kvc原理

热门文章

  1. Oracle开放1521端口 telnet不通解决办法
  2. 论PM与团队与敏捷开发
  3. Programming Principles and Practice Using C++ Notes2
  4. [LeetCode] 72. 编辑距离 ☆☆☆☆☆(动态规划)
  5. 【hadoop】MapReduce分布式计算框架原理
  6. Linux命令——systemctl
  7. Java精通并发-多线程同步关系实例剖析与详解
  8. mingw控制台中文乱码
  9. HTTP和HTTPS的区别和常见的面试题
  10. el-select remote 远程搜索 多个共享一个options,options改变时输入框值不显示名称的问题