博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[51Nod 1301] 集合异或和 (dp)
阅读量:5124 次
发布时间:2019-06-13

本文共 885 字,大约阅读时间需要 2 分钟。

Solution

一道比较好的dp题 想了半天组合数QAQ

首先要知道的是 A<B一定是B有一位是1且A的这位是0且前面都相等
那么肯定是要枚举这一位在哪里然后求出方案数
方案数考虑类似背包的方法分三种情况转移具体见代码

Code

#include 
#include
#include
#include
#include
#define F(i,a,b) for(register int i=(a);i<=(b);i++)using namespace std;typedef long long LL;const int N=5000,MOD=1e9+7;int n,m;LL ans,f[2][N][2];int main() { cin>>n>>m; for(int i=0;(1<
<=max(n,m);i++) { memset(f,0,sizeof(f)); f[0][0][0]=1; for(int j=1;j<=max(n,m);j++) { int x=(j>>i)&1,c=j&1; for(int k=0;k<=2048;k++) F(X,0,1) { f[c][k][X]=f[c^1][k][X]; if(j<=n) f[c][k][X]=(f[c][k][X]+f[c^1][k^j][X])%MOD; if(j<=m) f[c][k][X]=(f[c][k][X]+f[c^1][k^j][X^x])%MOD; } } F(j,(1<
<<(i+1))-1) ans=(ans+f[(max(n,m)&1)][j][1])%MOD; } printf("%lld",ans%MOD); return 0;}

转载于:https://www.cnblogs.com/Menteur-Hxy/p/9606839.html

你可能感兴趣的文章
动态规划求一个序列的最长回文子序列(Longest Palindromic Substring )
查看>>
网站公共部分的复用
查看>>
mysql 常用命令(一)
查看>>
单元测试原来是这样的呼
查看>>
Flask第一篇——URL详解
查看>>
机器学习项目笔记
查看>>
Qt 读写XML文件
查看>>
PM2.5环境检测系统的设计与分析
查看>>
net Core做一个webApi的简单实例
查看>>
hdu3549 最大流
查看>>
js动态时间(转)
查看>>
[转载]析构函数的虚析构和非虚析构调用的差别
查看>>
Selenium 自动化测试基础知识
查看>>
讲座感悟
查看>>
67. Plus One
查看>>
靠谱的Pycharm安装详细教程
查看>>
001. Ansible简介
查看>>
asp.net core利用DI实现自定义用户系统,脱离ControllerBase.User
查看>>
Redis缓存连接池管理
查看>>
mac brew 安装php扩展报错:parent directory is world writable but not sticky
查看>>