cf 401D. Roman and Numbers 数位dp,状压
来源:互联网 发布:dns 协议端口号为53 编辑:程序博客网 时间:2024/05/18 00:06
题意:给出两个数n,m,求x的个数,x需满足,x可由n的各位数字重新排列得到;x无前导零;x%m==0;
分析:比较简单的一道数位dp,由于n最多只有17位,可以状态压缩,dp[s][v]表示用掉集合s中的数,余数为v的个数,状态转移方程dp[s+k][(v*10+dig[k])%m]+=dp[s][v];
#include<iostream>#include<string>#include<cstring>#include<cstdio>#include<cmath>#include<iomanip>#include<map>#include<algorithm>#include<queue>#include<set>#define inf 10000000#define pi acos(-1.0)#define eps 1e-8#define seed 131using namespace std;typedef pair<int,int> pii;typedef unsigned long long ULL;typedef long long LL;const int maxn=100005;LL n;int m;LL dp[1<<18][100];int dig[18];int d[10];int main(){ scanf("%I64d%d",&n,&m); int k=0; memset(d,0,sizeof(d)); while(n) { dig[k]=n%10; d[dig[k]]++; n/=10; k++; } LL ans=1; for(int i=0;i<10;i++) { while(d[i]>1) { ans*=d[i]; d[i]--; } } memset(dp,0,sizeof(dp)); dp[0][0]=1; for(int i=0;i<(1<<k);i++) { for(int j=0;j<m;j++) { if(dp[i][j]==0) continue; for(int f=0;f<k;f++) { if(i==0&&dig[f]==0) continue; if(!((1<<f)&i)) { dp[i|(1<<f)][(j*10+dig[f])%m]+=dp[i][j]; //dp[i|(1<<f)][(j*10+dig[f])%m]%=m; } } } } cout<<dp[(1<<k)-1][0]/ans; return 0;}
0 0
- cf 401D. Roman and Numbers 数位dp,状压
- [数位dp] Codeforces 401D Roman and Numbers
- [Codefoces 401D]Roman and Numbers 数位dp
- Codeforce 401D Roman and Numbers[数位DP+状态压缩]
- CodeForces 401D Roman and Numbers【数位dp+状态压缩】
- codeforces 401D Roman and Numbers (数位dp)
- CF 401D Roman and Numbers
- CF 401D - Roman and Numbers
- Codeforces 401D Roman and Numbers【状压dp】
- Codeforces 401D Roman and Numbers 状压DP
- 数位dp CF 55 D. Beautiful numbers
- 数位dp CF 55D Beautiful numbers
- CF D. Beautiful numbers (数位dp)
- [数位dp] cf 55D Beautiful numbers
- CF 55D Beautiful numbers (数位DP)
- Codeforces Round #235 (Div. 2) / 410D Roman and Numbers (带有整除性质的数位DP)
- Codeforces Round #235 (Div. 2) D. Roman and Numbers (数位dp、状态压缩)
- CF 55D - Beautiful numbers(数位DP)
- Linux的bg和fg命令 ---让程序在前台后台之间切换
- 2015年2月开始CSDN博客生活
- 函数的意义
- C++惯用法:奇特的递归模板模式(Curiously Recurring Template Pattern,CRTP,Mixin-from-above)
- java动态页面静态化
- cf 401D. Roman and Numbers 数位dp,状压
- 表格分组折叠
- flex mobile性能优化点
- 关于寄存器ESP和EBP的一些理解
- python新式类多重继承 广度优先搜索 C3算法
- hdu 1864 最大报销额
- WebMatrix
- 史上最全!最经典!最无私的Android资料(书籍+代码)
- MySQL 数据库 password函数