BZOJ1072 排列perm 【状压dp】
来源:互联网 发布:mac任务管理器怎么打开 编辑:程序博客网 时间:2024/06/18 08:56
Description
给一个数字串s和正整数d, 统计s有多少种不同的排列能被d整除(可以有前导0)。例如123434有90种排列能
被2整除,其中末位为2的有30种,末位为4的有60种。
Input
输入第一行是一个整数T,表示测试数据的个数,以下每行一组s和d,中间用空格隔开。s保证只包含数字0, 1
, 2, 3, 4, 5, 6, 7, 8, 9.
Output
每个数据仅一行,表示能被d整除的排列的个数。
Sample Input
7
000 1
001 1
1234567890 1
123434 2
1234 7
12345 17
12345678 29
000 1
001 1
1234567890 1
123434 2
1234 7
12345 17
12345678 29
Sample Output
1
3
3628800
90
3
6
1398
3
3628800
90
3
6
1398
HINT
在前三个例子中,排列分别有1, 3, 3628800种,它们都是1的倍数。
【限制】
100%的数据满足:s的长度不超过10, 1<=d<=1000, 1<=T<=15
题解
听说暴力可以过,但听说状压dp才是正解。。
设f[s][j]表示状态s下【s表示已经选择了哪些数】余数为j的方案数,那么f[s | (1<<i-1)][(j * 10 + a[i])%d] += f[s][j]
很明显,状态s下可以通过在末尾添加一个不在状态中的i号数来转移到s|(1<<i-1)这个状态
阅读全文
0 0
- BZOJ1072 排列perm 【状压dp】
- 【bzoj1072】【SCOI2007】【排列perm】【状压dp】
- [BZOJ1072][SCOI2007]排列perm(状压dp)
- BZOJ1072: [SCOI2007]排列perm 状压DP
- [BZOJ1072][SCOI2007]排列perm(状压dp)
- bzoj1072 [SCOI2007]排列perm(状压dp)
- BZOJ1072[SCOI2007]排列perm 状压Dp
- BZOJ1072(SCOI2007)[排列perm]--状压DP
- [BZOJ1072]-[SCOI2007]排列perm-状压DP
- bzoj1072: [SCOI2007]排列perm 压状dp
- [BZOJ1072] [SCOI2007] 排列perm - dfs/dp
- bzoj1072: [SCOI2007]排列perm
- [BZOJ1072][SCOI2007]排列perm
- 【SCOI2007】【BZOJ1072】排列perm
- bzoj1072【SCOI2007】排列perm
- bzoj1072: [SCOI2007]排列perm
- BZOJ1072: [SCOI2007]排列perm
- bzoj1072: [SCOI2007]排列perm
- 关于仿射矩阵的推导过程
- 我勒个去, 外网少了一个sql字段
- NSUserDefaults
- Pat 1012. 数字分类 (20)
- 关系型数据库与非关系型数据库的区别
- BZOJ1072 排列perm 【状压dp】
- linux系统之存储设备的管理
- python备忘录
- PAT Basic 1008
- 三层架构-初理解
- 1024 矩阵中不重复的元素 set统计个数 + log处理数据过大问题
- 异常
- 深度学习:前馈网络
- hdoj-2090-算菜价-水题