bzoj 1072(状压dp)
来源:互联网 发布:开发html的软件 编辑:程序博客网 时间:2024/06/06 00:16
传送门
定义dp[i][j]为状态i下余数为j的方案数。
然后正常dp即可,注意“264111”这种可能会算3!遍,所以最后要对dp[2^len-1][0]去重。
dp过程出错以为是字符串没有输进去(第一个串为000,),调了半天鬼冒火,键盘是个什么东西好不好吃(╬▔皿▔)
#include<bits/stdc++.h>using namespace std;int MOD,dp[1026][1002],num[12],a[12],fac[12];char ss[15];int main() {// freopen("bzoj 1072.in","r",stdin); int kase; scanf("%d",&kase); fac[0]=1; for (int i=1;i<=10;++i) fac[i]=i*fac[i-1]; while (kase--) { memset(num,0,sizeof(num)); memset(dp,0,sizeof(dp)); scanf("%s%d",ss,&MOD); int len=strlen(ss); for (int i=0;i<len;++i) ++num[a[i]=ss[i]-'0']; dp[0][0]=1; for (int i=0;i<(1<<len);++i) for (int j=0;j<len;++j) if ((i&(1<<j))==0) for (int m=0;m<MOD;++m) dp[i^(1<<j)][((m*10)+a[j])%MOD]+=dp[i][m]; int ans=dp[(1<<len)-1][0]; for (int i=0;i<10;++i) ans/=fac[num[i]]; printf("%d\n",ans); } return 0;}
阅读全文
0 0
- bzoj 1072(状压dp)
- BZOJ 1072 排列perm (状压dp)
- bzoj 4145(状压dp)
- bzoj 4057(状压dp)
- bzoj 2073(状压dp)
- bzoj 1087(状压dp)
- BZOJ 1072 [SCOI 2007] 排列perm (状压DP)
- bzoj 1072: [SCOI2007]排列perm(状压DP)
- bzoj 1072: [SCOI2007]排列perm(状压dp)
- BZOJ 1072 SCOI2007 排列perm 状压DP
- BZOJ 1072 [SCOI2007]排列perm 状压DP
- 【BZOJ 1072】 [SCOI2007]排列perm 状压dp
- BZOJ 1072: [SCOI2007]排列perm 状压dp
- bzoj 1072: [SCOI2007]排列perm 状压dp
- bzoj 1195: [HNOI2006]最短母串 (状压dp)
- bzoj 2064: 分裂(状压dp)
- BZOJ 1087-互不侵犯King(状压DP)
- BZOJ 1087 互不侵犯King (状压dp)
- Servlet处理请求报文9
- 快速排序,排序一亿数据用时14秒
- Linux中启动Apache中的Could not reliably determine the server's fully qualified domain name问题
- 浅谈 python的类和对象
- 某安全浏览器竟然也被查出高危漏洞?开源安全问题不容忽视
- bzoj 1072(状压dp)
- redis
- 自尊就是吃饱了撑的-莫言
- Sass变量、嵌套、混和宏、继承、占位符
- 数据库连接池的实现及原理
- 4、Spring技术栈-验证码生成与发送
- 八皇后问题
- 宏定义来实现条件编译(#define #undef #ifdef)
- sqlserver 删除数据库的所有表