[Codefroces401D]Roman and Numbers(状压+数位DP)
题意:给定一个数,求将该数重新排列后mod m==0的方案数
重新排列就考虑到用到哪些数,以及此时mod m的值
于是dp[i][j]表示状态i中mod m==j的方案数
注意:转移的时候只要找到一种可行的转移就行,不然会计算重复的方案数
为了转移的方便,可以将相同的数字放在一起便于检索
Code
#include <cstdio>
#include <algorithm>
#include <cstring>
#define ll long long
using namespace std; char s[20];
ll dp[1<<18][110];
int m,l,cnt[20],A[20]; int main(){
scanf("%s%d",s,&m);
l=strlen(s);
for(int i=0;i<l;++i)cnt[s[i]-'0']++;
for(int i=0;i<11;++i)A[i]=A[i-1]+cnt[i-1];
dp[0][0]=1;
for(int i=0;i<(1<<l);++i)
for(int j=0;j<m;++j)
if(dp[i][j])
for(int k=0;k<10;++k){
if((!i)&&(!k))continue;
for(int o=A[k];o<A[k+1];++o)
if(!(i&(1<<o))){
dp[i|(1<<o)][((j<<3)+(j<<1)+k)%m]+=dp[i][j];
break;
}
}
printf("%lld\n",dp[(1<<l)-1][0]);
return 0;
}
[Codefroces401D]Roman and Numbers(状压+数位DP)的更多相关文章
- Codeforces Round #235 (Div. 2) D. Roman and Numbers 状压dp+数位dp
题目链接: http://codeforces.com/problemset/problem/401/D D. Roman and Numbers time limit per test4 secon ...
- CF401D Roman and Numbers 状压DP
CF401D 题意翻译 将n(n<=10^18)的各位数字重新排列(不允许有前导零) 求 可以构造几个mod m等于0的数字 题目描述 Roman is a young mathematicia ...
- 【BZOJ1662】[Usaco2006 Nov]Round Numbers 圆环数 数位DP
[BZOJ1662][Usaco2006 Nov]Round Numbers 圆环数 Description 正如你所知,奶牛们没有手指以至于不能玩"石头剪刀布"来任意地决定例如谁 ...
- 【10.26校内测试】【状压?DP】【最小生成树?搜索?】
Solution 据说正解DP30行??? 然后写了100行的状压DP?? 疯狂特判,一算极限时间复杂度过不了aaa!! 然而还是过了....QAQ 所以我定的状态是待转移的位置的前三位,用6位二进制 ...
- 【BZOJ3925】[ZJOI2015] 地震后的幻想乡(状压期望DP)
点此看题面 大致题意: 有\(n\)个点和\(m\)条边,每条边的权值是一个\(0\sim1\)的随机实数,要你用\(n-1\)条边将图联通,问这\(n-1\)条边中边权最大值的期望最小值. 提示 这 ...
- HDU - 4804 Campus Design(状压+轮廓线dp)
Campus Design Nanjing University of Science and Technology is celebrating its 60th anniversary. In o ...
- $POJ2411\ Mondriaan's\ Dream$ 状压+轮廓线$dp$
传送门 Sol 首先状压大概是很容易想到的 一般的做法大概就是枚举每种状态然后判断转移 但是这里其实可以轮廓线dp 也就是从上到下,从左到右地放方块 假设我们现在已经放到了$(i,j)$这个位置 那么 ...
- [Luogu P2051] [AHOI2009]中国象棋 (状压DP->网格DP)
题面 传送门:https://www.luogu.org/problemnew/show/P2051 Solution 看到这题,我们不妨先看一下数据范围 30pt:n,m<=6 显然搜索,直接 ...
- HDU 4336 Card Collector(状压 + 概率DP 期望)题解
题意:每包干脆面可能开出卡或者什么都没有,一共n种卡,每种卡每包爆率pi,问收齐n种卡的期望 思路:期望求解公式为:$E(x) = \sum_{i=1}^{k}pi * xi + (1 - \sum_ ...
随机推荐
- easyui学习笔记7—在手风琴中显示表格
在这一篇中我们看看如何在手风琴里面显示表格数据的. 1.先看看引用的资源 <link rel="stylesheet" type="text/css" h ...
- backtrack渗透测试中常用的命令总结
ping 域名/ip 测试本机到远端主机是否联通. dig 域名/ip 查看域名解析的详细信息. host -l 域名 dns服务器 传输zone. 扫描 nmap: -sS 半开扫描TCP和SYN扫 ...
- is和as在类型转换时的性能差异
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/xxdddail/article/details/36655219 is和as是.NET中经常使用的操 ...
- PHP-----文件-----目录操作
目录操作 [1]创建目录(文件夹) mkdir("路径"); 例子: mkdir("./test"); 显示的结果: [2]删除目录(文件夹)只能删除空的文 ...
- BZOJ 4028: [HEOI2015]公约数数列 【分块 + 前缀GCD】
任意门:https://www.lydsy.com/JudgeOnline/problem.php?id=4028 4028: [HEOI2015]公约数数列 Time Limit: 10 Sec ...
- ASP.NET Web API编程——使用自签名SSL证书
1自签名SSL证书的创建 创建自签名SSL工具xca为:https://sourceforge.net/projects/xca/ 创建过程 1)创建根证书 打开软件,界面如下. 点击,看到下拉菜单, ...
- 【luogu P1939 【模板】矩阵加速(数列)】 题解
题目链接:https://www.luogu.org/problemnew/show/P1939 对于矩阵推序列的式子: 由题意知: f[x+1] =1f[x] + 0f[x-1] + 1f[x-2] ...
- win7系统安装VS2013后,连不上远程sqlserver数据库解决办法
刚搬了地方,顺便把电脑重做了系统,把sql2012和vs2013装好,怎么弄也连不上远程的数据库了,用程序连IIS直接死掉,用ssms连也是直接失去响应,开始以为是网线端口被运营商封杀了,最后发现不是 ...
- 一点一点看JDK源码(五)java.util.ArrayList 后篇之Spliterator多线程遍历
一点一点看JDK源码(五)java.util.ArrayList 后篇之Spliterator多线程遍历 liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点看J ...
- RabbitMQ初学之踩坑记录
1:账号或密码错误 com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused usi ...