Link:

BZOJ 1072 传送门

Solution:

一道直接next_permutation纯暴力就能过的题?

难道2007年时大家都不知道next_permutation这个函数吗

还是用复杂度更优的状压DP吧

设$dp[i][j]$为状态为$i$且对$d$余$j$的个数,

注意$dp[(1<<len)-1][0]$最后除去$\prod_{i=0}^9 cnt[i]!$,排除重复项

现在对状压DP状态的选取有了些感悟,

一般来说第一项表示状态,而第二项表示的一般都是于答案相关且包含答案情况的

(EX:求整除,表示当前对$d$的余数)

Code:

#include <bits/stdc++.h>

using namespace std;

int T,d,len,cnt[],dupli[],dp[][];
char s[]; int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%s %d",s,&d);len=strlen(s);
for(int i=;i<;i++) dupli[i]=;
memset(cnt,,sizeof(cnt));memset(dp,,sizeof(dp)); for(int i=;i<len;i++)
cnt[s[i]-'']++,dupli[s[i]-'']*=cnt[s[i]-'']; dp[][]=;
for(int i=;i<(<<len);i++)
for(int j=;j<d;j++)
if(dp[i][j])
for(int k=;k<len;k++)
if(!(i&(<<k)))
dp[i|(<<k)][(j*+(s[k]-''))%d]+=dp[i][j]; for(int i=;i<=;i++) dp[(<<len)-][]/=dupli[i];
printf("%d\n",dp[(<<len)-][]);
}
return ;
}

最新文章

  1. JavaBean学习总结(上)
  2. Apache多站点实现原理和配置
  3. Masonry(AutoLayout)的使用
  4. ACM/ICPC 之 枚举(POJ1681-画家问题+POJ1166-拨钟问题+POJ1054-讨厌的青蛙)
  5. 使用ConfigurationManager类读写配置文件
  6. css+div如何解决文字溢出
  7. [译]rabbitmq 2.5 Where’s my message? Durability and you
  8. sphinx下的max_matches取值对SetLimits的影响
  9. 手势解锁自定义View
  10. UPUPW PHP环境集成包
  11. UVA 10714 Ants 蚂蚁 贪心+模拟 水题
  12. O-C相关-06:对象与对象的关系
  13. [转] 怎样快速而优雅地遍历 JavaScript 数组
  14. 7816的报文结构APDU
  15. mac在变化mysql-rootpassword-各种解决问题的能力
  16. Swift初探一
  17. 在COM组件中调用JS函数
  18. JAVA基础知识(1)
  19. 欧拉函数之HDU1286找新朋友
  20. SpringMvc+JavaConfig+Idea 搭建项目

热门文章

  1. LowercaseRoutesMVC ASP.NET MVC routes to lowercase URLs
  2. POJ1087:A Plug for UNIX(最大流)
  3. WITH AS 使用
  4. 转:Mybatis系列之集合映射
  5. 3中转换JSON数据的方式
  6. bzoj 2705 数学 欧拉函数
  7. certbot 免费httos证书申请
  8. Linux-进程间通信(一): 管道
  9. Linux 下编译安装OpenCV【转】
  10. Selenium2+python自动化40-cookie相关操作【转载】