题目链接


题目大意:

有nnn个数。每次数范围是[0,2k]∣k∈[0,3e5][0,2^k]|k\in[0,3e5][0,2k]∣k∈[0,3e5]
问你有多少种情况这nnn个数的与大于等于异或


首先我们分析一下:
对于多阶段决策的的计数并且对后面决策有影响那么我们大概率的dp方程可以这么写
dp[i][j]选到了第i位,有j种状态dp[i][j]选到了第i位,有j种状态dp[i][j]选到了第i位,有j种状态

首先对于这种位运算的题目我们就拆位,每一位前面有两种状态:

  1. 就是已经出现一个二进制位大于了,那么这一位怎么取都可以
  2. 前面全是相等的情况
  3. dp[i][1]:表示后i位开始比异或大dp[i][1]:表示后i位开始比异或大dp[i][1]:表示后i位开始比异或大
  4. dp[i][0]:表示到后i位一直和异或结果相等dp[i][0]:表示到后i位一直和异或结果相等dp[i][0]:表示到后i位一直和异或结果相等

那么dp转移就很明显了!
那么久分类讨论一些奇数个1异或为1


AC代码:

#include <bits/stdc++.h>using namespace std;
typedef long long ll;
const int maxn = 2e5 + 10, mod = 1e9 + 7;
long long dp[maxn][2];
ll qim(ll a, ll b) {ll  res = 1;while(b) {if(b & 1) res = (a * res) % mod;a = (a * a) % mod;b >>= 1;}return res % mod;
}
int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int T;cin >> T;while(T --) {int n, m;cin >> n >> m;if(m == 0) {cout << "1\n";continue;}long long ans = 0;dp[m+1][1] = 0;dp[m+1][0] = 1; for(int i = m; i >= 1; -- i) {if(n & 1) {dp[i][1] = 0;dp[i][0] = dp[i+1][0] * (1 + qim(2,n-1)) % mod; } else {dp[i][1] = (dp[i+1][1] * qim(2,n) % mod + dp[i+1][0]) % mod;dp[i][0] = dp[i+1][0] * (qim(2,n-1)-1+mod) % mod;  }}cout << (dp[1][1] + dp[1][0]) % mod << "\n";}return 0;
}

组合计数 ---- Codeforces 737C Div2 C. Moamen and XOR [多阶段决策计数dp]相关推荐

  1. 组合计数 ---- Codeforces Round #370 (Div. 2)D. Memory and Scores[dp]

    题目大意:Memory 和 Lexa分别取数,取ttt轮,每一轮取的数字的范围为[−k,k][−k,k][−k,k],并且将取的数字加他们的得分,问有多少种方案Memory的得分严格大于Lexa.Me ...

  2. codeforces#320(div2) D Or Game 贪心

    codeforces#320(div2) D  "Or" Game  贪心 D. "Or" Game time limit per test 2 seconds ...

  3. Codeforces Round #737 (Div. 2)---C. Moamen and XOR

    Codeforces Round #737 (Div. 2)-C. Moamen and XOR Moamen and Ezzat are playing a game. They create an ...

  4. codeforces 628.div2

    # Codeforces 628.div2 A. EhAb AnD gCd B. CopyCopyCopyCopyCopy C. Ehab and Path-etic MEXs D. Ehab the ...

  5. codeforces#324(div2) E. Anton and Ira 贪心

    codeforces#324(div2) E. Anton and Ira  贪心 E. Anton and Ira time limit per test 1 second memory limit ...

  6. codeforces 712 div2 ABC

    codeforces 712 div2 ABC A. Déjà Vu A palindrome is a string that reads the same backward as forward. ...

  7. cf1557 C. Moamen and XOR

    cf1557 C. Moamen and XOR 题意: 一个n位数,每一位小于2k2^k2k,如果a1&a2&-an>=a1⊕a2-⊕an,则获胜 现在给你n和k,问能构造多少 ...

  8. Codeforces 947E Perpetual Subtraction (线性代数、矩阵对角化、DP)

    Codeforces 947E Perpetual Subtraction (线性代数.矩阵对角化.DP) 手动博客搬家: 本文发表于20181212 09:37:21, 原地址https://blo ...

  9. Moamen and XOR

    C. Moamen and XOR 莫阿门和伊扎特在玩游戏.他们创建了一个由n个非负整数组成的数组a其中每个元素都小于2k. 当a1&a2&a3&-&an≥a1⊕a2⊕ ...

最新文章

  1. poj 2513 Colored Sticks( 字典树哈希+ 欧拉回路 + 并查集)
  2. 20135320赵瀚青LINUX第四章读书笔记
  3. 查看依赖树_如何在基于 Ubuntu 或 Debian 的 Linux 发行版中查看一个软件包的依赖...
  4. html中只能上传文件word,HTML文件表单,接受Word文档(HTML file form, accept Word documents)...
  5. 如何在GO语言中使用Kubernetes API?
  6. javaweb——总结
  7. 烤仔观察丨和你息息相关!DCEP 能否领跑?各国数字货币都在搞什么?
  8. 飞睿科技微波雷达感应方案,多普勒雷达效应技术应用
  9. 【C语言】把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
  10. Oracle快速复制一张表
  11. 关于T51的25C°电池曲线合成(MTK)
  12. 二、Nio之Channel
  13. 如何应对大数据分析工程师面试Spark考察,看这一篇就够了
  14. 关于深度学习的基本知识(面试常见问题)
  15. 后端开发——Java
  16. 倾情奉献:我的公众号矩阵之路
  17. Some projects cannot be imported because their project description file is corrupted
  18. scrcpy-win64-v1.24使用
  19. 学习在不断进行中……
  20. 计算机断层ct检查要不要麻醉,你过虑了!做CT记住三个叮嘱,其实不会很伤身体...

热门文章

  1. 实例分割最新最全面综述:从Mask R-CNN到BlendMask
  2. pip经常的使用技巧
  3. 栈与队列4——用一个栈实现另一个栈的排序
  4. 构建你的第一个Flutter视频通话应用
  5. watchOS 5 新特性:继续发力运动与健身
  6. Tomcat介绍、安装JDK、安装Tomcat
  7. MaxScale:实现MySQL读写分离与负载均衡的中间件利器
  8. 一篇文章一张思维导图看懂Android学习最佳路线
  9. iptables踩坑记
  10. 稳压管,TVS管,压敏电阻,气体放电管等电涌保护器器件比较------amoBBS