[数位DP][线性基]Codeforces 388D. Fox and Perfect Sets
来源:互联网 发布:apache poi api 编辑:程序博客网 时间:2024/05/22 02:17
Description
一个集合
所有集合元素小于等于
Solution
可以从线性基考虑。
按数位从高到低加入。
设
若要加入这个
然后枚举异或和转移就好啦。
#include <bits/stdc++.h>using namespace std;const int N = 100;const int MOD = 1000000007;typedef long long ll;int n, m, ans;int dp[N][N][2];inline void Add(int &x, int a) { x += a; while (x >= MOD) x -= MOD;}int main(void) { freopen("1.in", "r", stdin); cin >> n; dp[32][0][1] = 1; for (int i = 32; i; i--) for (int j = 0; j <= 32; j++) { Add(dp[i - 1][j][0], (1ll << j) * dp[i][j][0] % MOD); Add(dp[i - 1][j + 1][0], dp[i][j][0]); long long t0 = j ? (1 << (j - 1)) : 1, t1 = j ? (1 << (j - 1)) : 0; if ((n >> (i - 1)) & 1) { Add(dp[i - 1][j][1], t1 * dp[i][j][1] % MOD); Add(dp[i - 1][j][0], t0 * dp[i][j][1] % MOD); Add(dp[i - 1][j + 1][1], dp[i][j][1]); } else Add(dp[i - 1][j][1], t0 * dp[i][j][1] % MOD); } for (int i = 0; i <= 32; i++) { Add(ans, dp[0][i][1]); Add(ans, dp[0][i][0]); } cout << ans << endl; return 0;}
阅读全文
2 0
- [数位DP][线性基]Codeforces 388D. Fox and Perfect Sets
- 数位DP CF388D - Fox and Perfect Sets
- CF228D Fox and Perfect Sets
- codeforces 510D D. Fox And Jumping(dp+数论)
- codeforces 510D D. Fox And Jumping(dp+数论)
- [数位dp] Codeforces 401D Roman and Numbers
- CodeForces 401D Roman and Numbers【数位dp+状态压缩】
- codeforces 401D Roman and Numbers (数位dp)
- Codeforces Round #290 D. Fox And Jumping
- Fox And Jumping - CodeForces 510 D
- codeforces 510D Fox And Jumping
- codeforces 510D Fox And Jumping
- codeforces 510D Fox and Jumping
- 【数位DP】 【CodeForces 55D】
- codeforces 55D 数位DP
- codeforces 401D (数位DP)
- CodeForces 401D 数位DP
- Codeforces 55D 数位DP
- 服务器安装到同步流程一览
- Map的有序实现类和无序实现类
- Cassandra的安装配置及简单操作
- oracle 添加索引
- volley请求搭配图片请求
- [数位DP][线性基]Codeforces 388D. Fox and Perfect Sets
- Struts2 架构 拦截器
- HttpClient请求网络
- Java语言发展史
- 20171025
- 罗技g502鼠标使用感受,以及与g402的对比体验
- CAD快速批量转为图片
- Spring 报 NoSuchBeanDefinitionException
- 神经网络及其matlab仿真