[CTSC2017]吉夫特(Lucas定理,DP)
2018-04-19 17:08
309 查看
送70分,预处理组合数是否为偶数即可。
剩下的数据,根据Lucas定理的推论可得当且仅当n&m=n的时候,C(n,m)为奇数。
这样就可以直接DP了,对于每个数,考虑它对后面的数的影响即可,直接枚举子集即可。
#include<cstdio> #include<algorithm> #define rep(i,l,r) for (int i=l; i<=r; i++) using namespace std; const int N=250000,mod=1000000007; int n,ans,a ,f ,pos ; void up(int &x,int y){ x+=y; if (x>=mod) x-=mod; } int main(){ freopen("gift.in","r",stdin); freopen("gift.out","w",stdout); scanf("%d",&n); rep(i,1,n) scanf("%d",&a[i]),pos[a[i]]=i,f[a[i]]=1; rep(i,1,n) for (int s=(a[i]-1)&a[i]; s; s=(s-1)&a[i]) if (pos[s]>i) up(f[s],f[a[i]]); rep(i,1,n) up(ans,f[a[i]]); printf("%d\n",(ans-n+mod)%mod); return 0; }
相关文章推荐
- loj 300 [CTSC2017]吉夫特 【Lucas定理 + 子集dp】
- [子集DP][Lucas定理] BZOJ 4903: [Ctsc2017]吉夫特
- BZOJ.4903.[CTSC2017]吉夫特(Lucas DP)
- 【CTSC2017】【BZOJ4903】吉夫特 卢卡斯定理 DP
- [UOJ 300][CTSC2017]吉夫特-扩展Lucas定理
- bzoj 4903: [Ctsc2017]吉夫特【lucas+状压dp】
- [CTSC2017][bzoj4903] 吉夫特 [状压dp+Lucas定理]
- 【BZOJ4903】【CTSC2017】吉夫特 [DP]
- 【bzoj4903/uoj300】[CTSC2017]吉夫特 数论+状压dp
- [DP 分块子集枚举] UOJ#300.【CTSC2017】吉夫特
- [数位DP Lucas定理] 2017 计蒜之道 复赛 E. 商汤智能机器人
- [BZOJ4903][UOJ300][Ctsc2017]吉夫特(DP+优化)
- uoj 300 [CTSC2017]吉夫特 - Lucas - 分块 - 动态规划
- [DP 分块] UOJ #300. 【CTSC2017】吉夫特
- hdu5794A Simple Chess(lucas定理+dp)
- 帕斯卡公式+Lucas定理______DP?( hdu 3944 )
- HDU 3944 DP? (Lucas定理)
- UOJ275 [清华集训2016] 组合数问题 【Lucas定理】【数位DP】
- HDU 3944-DP?(Lucas定理+预处理)
- DP? HDU - 3944 Lucas定理+费马小定理