#300. 【CTSC2017】吉夫特
来源:互联网 发布:iis批量绑定域名 编辑:程序博客网 时间:2024/06/06 05:21
明明已经广为流传,
考虑
Cmn mod 2≡1 的成立条件
根据Lucas 定理,有Cmn mod 2=C⌊m2⌋⌊n2⌋∗Cm mod 2n mod 2
那么如果这个东西最后等于0 ,一定存在某一位,m 在这一位上为1 而n 为0
因为C10 不存在的
那么就能证明,当n & m = m时Cmn mod 2≡1
那么记f[i] 为以数字i 结尾的合法方案数
枚举子集转移就行了
O(3N) 其中N 为最大幂次
#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn = 2E5 + 4E4 + 233;const int mo = 1000000007;int n,A[maxn],f[maxn],pos[maxn];#define Add(x,y) ((x) + (y) < mo ? (x) + (y) : (x) + (y) - mo)#define Dec(x,y) ((x) - (y) >= 0 ? (x) - (y) : (x) - (y) + mo)inline int getint(){ char ch = getchar(); int ret = 0; while (ch < '0' || '9' < ch) ch = getchar(); while ('0' <= ch && ch <= '9') ret = ret * 10 + ch - '0',ch = getchar(); return ret;}int main(){ #ifdef DMC freopen("DMC.txt","r",stdin); #endif n = getint(); for (int i = 1; i <= n; i++) A[i] = getint(),pos[A[i]] = i,f[A[i]] = 1; for (int i = 1; i <= n; i++) for (int o = A[i] - 1 & A[i]; o; o = o - 1 & A[i]) if (pos[o] > i) f[o] = Add(f[o],f[A[i]]); int Ans = 0; for (int i = 1; i <= n; i++) Ans = Add(Ans,f[A[i]]); cout << Dec(Ans,n) << endl; return 0;}
阅读全文
0 0
- #300. 【CTSC2017】吉夫特
- [DP 分块] UOJ #300. 【CTSC2017】吉夫特
- BZOJ4903 [Ctsc2017]吉夫特
- 洛谷 P3773 [CTSC2017]吉夫特(bzoj P4903 [CTSC2017]吉夫特/uoj P300【CTSC2017】吉夫特)
- [UOJ 300][CTSC2017]吉夫特-扩展Lucas定理
- CTSC2017游记
- CTSC2017&&APIO2017
- CTSC2017总结
- CTSC2017 总结
- CTSC2017游记
- CTSC2017游记
- #297. 【CTSC2017】密钥
- BZOJ4900 [CTSC2017]密钥
- ATP的CTSC2017现形记
- uoj#299. 【CTSC2017】游戏 & bzoj4902
- bzoj4900【CTSC2017】Day1T1 密钥 cipher 乱搞
- 北京20日游记(ctsc2017~thusc2017)
- 北京20天酱油记——ctsc2017&apio2017&thupc2017&pkusc2017&thusc2017
- 循环:念整数
- 【TED】The psychology of self-motivation--Scott Geller
- 模拟实现printf
- 装饰者模式
- 【Caffe的C++接口使用说明(一)】caffe_windows下的第一个测试程序学习教程
- #300. 【CTSC2017】吉夫特
- caffe学习笔记(八)——binaryproto 转 npy、mat文件
- C语言单向链表的实现
- 【VS插件】Image Watch插件
- 数组:井字棋
- 【脚本语言系列】关于Python网页服务Plone,你需要知道的事
- D3 force(力导向图)研究之二:如何布局超过十万个节点的图谱
- jQuery选择器总结
- 求小于n的与n互质的数的和