组合计数 ---- Codeforces 737C Div2 C. Moamen and XOR [多阶段决策计数dp]
题目链接
题目大意:
有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种状态
首先对于这种位运算的题目我们就拆位,每一位前面有两种状态:
- 就是已经出现一个二进制位大于了,那么这一位怎么取都可以
- 前面全是相等的情况
- dp[i][1]:表示后i位开始比异或大dp[i][1]:表示后i位开始比异或大dp[i][1]:表示后i位开始比异或大
- 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]相关推荐
- 组合计数 ---- Codeforces Round #370 (Div. 2)D. Memory and Scores[dp]
题目大意:Memory 和 Lexa分别取数,取ttt轮,每一轮取的数字的范围为[−k,k][−k,k][−k,k],并且将取的数字加他们的得分,问有多少种方案Memory的得分严格大于Lexa.Me ...
- codeforces#320(div2) D Or Game 贪心
codeforces#320(div2) D "Or" Game 贪心 D. "Or" Game time limit per test 2 seconds ...
- 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 ...
- codeforces 628.div2
# Codeforces 628.div2 A. EhAb AnD gCd B. CopyCopyCopyCopyCopy C. Ehab and Path-etic MEXs D. Ehab the ...
- 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 ...
- codeforces 712 div2 ABC
codeforces 712 div2 ABC A. Déjà Vu A palindrome is a string that reads the same backward as forward. ...
- cf1557 C. Moamen and XOR
cf1557 C. Moamen and XOR 题意: 一个n位数,每一位小于2k2^k2k,如果a1&a2&-an>=a1⊕a2-⊕an,则获胜 现在给你n和k,问能构造多少 ...
- Codeforces 947E Perpetual Subtraction (线性代数、矩阵对角化、DP)
Codeforces 947E Perpetual Subtraction (线性代数.矩阵对角化.DP) 手动博客搬家: 本文发表于20181212 09:37:21, 原地址https://blo ...
- Moamen and XOR
C. Moamen and XOR 莫阿门和伊扎特在玩游戏.他们创建了一个由n个非负整数组成的数组a其中每个元素都小于2k. 当a1&a2&a3&-&an≥a1⊕a2⊕ ...
最新文章
- poj 2513 Colored Sticks( 字典树哈希+ 欧拉回路 + 并查集)
- 20135320赵瀚青LINUX第四章读书笔记
- 查看依赖树_如何在基于 Ubuntu 或 Debian 的 Linux 发行版中查看一个软件包的依赖...
- html中只能上传文件word,HTML文件表单,接受Word文档(HTML file form, accept Word documents)...
- 如何在GO语言中使用Kubernetes API?
- javaweb——总结
- 烤仔观察丨和你息息相关!DCEP 能否领跑?各国数字货币都在搞什么?
- 飞睿科技微波雷达感应方案,多普勒雷达效应技术应用
- 【C语言】把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
- Oracle快速复制一张表
- 关于T51的25C°电池曲线合成(MTK)
- 二、Nio之Channel
- 如何应对大数据分析工程师面试Spark考察,看这一篇就够了
- 关于深度学习的基本知识(面试常见问题)
- 后端开发——Java
- 倾情奉献:我的公众号矩阵之路
- Some projects cannot be imported because their project description file is corrupted
- scrcpy-win64-v1.24使用
- 学习在不断进行中……
- 计算机断层ct检查要不要麻醉,你过虑了!做CT记住三个叮嘱,其实不会很伤身体...