题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1072

好像是这方面的裸题。

整除k 要想转移需要记录下 达到模k所有余数 的方案数。

为了生成排列,状压记录当前已用了原数组中的哪些位置;

因为是无顺序地取用的,所以可以有顺序地放在目标数组中,即续在上一个数后面;所以 导致的余数 就是 之前余数*10+这个数。

  另一种想法是有顺序取用、无顺序放置;即用了前 i 个数,状压记录放在了哪些位置上;新加入一个数的贡献是 之前余数+这个数*1ek。

  感觉第一种比较方便?

循环的顺序需要注意!要把状压的状态 j 放在最外面,而不是当前位置 i 。

dp的初值需要想想。

对于值相等的一些数字,在排列中无区别,dp的时候却有区别地对待了。

  只需要对于每一组,答案除去它们的排列数(即阶乘)即可。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int t,a[],cnt,k,d[][],lm,ans,num[];
char ch;
int kj[]={,,,,,,,,,,};
int main()
{
scanf("%d",&t);
while(t--)
{
cnt=;ans=;
memset(d,,sizeof d);
memset(num,,sizeof num);
d[][]=;/////
scanf(" %c",&ch);
while(ch>=''&&ch<='')
{
a[++cnt]=ch-'';
num[a[cnt]]++;
ch=getchar();
}
lm=(<<cnt);
scanf("%d",&k);
for(int j=;j<lm;j++)//当前取用了原串中哪些位置(按顺序后续着放下)
for(int i=;i<=cnt;i++)
if((j&(<<(i-)))==)
for(int l=;l<k;l++)
d[j|(<<(i-))][(l*+a[i])%k]+=d[j][l];
ans=d[lm-][];
for(int i=;i<=;i++)ans/=kj[num[i]];
printf("%d\n",ans);
}
return ;
}

bzoj1072排列的更多相关文章

  1. BZOJ1072 排列perm 【状压dp】

    Description 给一个数字串s和正整数d, 统计s有多少种不同的排列能被d整除(可以有前导0).例如123434有90种排列能 被2整除,其中末位为2的有30种,末位为4的有60种. Inpu ...

  2. [bzoj1072]排列

    考虑用状压dp枚举排列,即f[i][j]表示当前状态为i,余数为j的方案数,考虑在末尾新增一个字符来转移即可,注意最后答案要除以排列组合 1 #include<bits/stdc++.h> ...

  3. DP——由蒟蒻到神犇的进阶之路

    开始更新咯 DP专题[题目来源BZOJ] 一.树形DP 1.bzoj2286消耗战 题解:因为是树形结构,一个点与根节点不联通,删一条边即可, 于是我们就可以简化这棵树,把有用的信息建立一颗虚树,然后 ...

  4. 【BZOJ1072】排列(搜索)

    [BZOJ1072]排列(搜索) 题面 BZOJ 洛谷 题解 算下复杂度,如果用\(next\_permutation\) 那就是\(10!\times 10\times 15\),复杂度不太对 那好 ...

  5. [BZOJ1072][SCOI2007] 排列prem

    Description 给一个数字串s和正整数d, 统计s有多少种不同的排列能被d整除(可以有前导0).例如123434有90种排列能被2整除,其中末位为2的有30种,末位为4的有60种. Input ...

  6. 【BZOJ1072】【SCOI2007】排列 [状压DP]

    排列 Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 给一个数字串s和正整数d, 统计s有多 ...

  7. 【枚举】bzoj1072 [SCOI2007]排列perm

    暴力,next_permutation函数用于枚举出下一个排列.sscanf函数用于将字符串转化成数字. #include<cstdio> #include<cstring> ...

  8. [BZOJ1072][SCOI2007]排列perm 状压dp

    1072: [SCOI2007]排列perm Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2488  Solved: 1546[Submit][St ...

  9. [bzoj1072][SCOI2007][排列perm] (状态压缩+数位dp+排列去重)

    Description 给一个数字串s和正整数d, 统计s有多少种不同的排列能被d整除(可以有前导0).例如123434有90种排列能被2整除,其中末位为2的有30种,末位为4的有60种. Input ...

随机推荐

  1. EBS R12 MOAC原理探索 (转)

    转载地址 EBS R12 MOAC原理探索

  2. eclipse properties 文件查看和编辑插件 Properties Editor

    Properties Edito官网地址:http://propedit.sourceforge.jp/index_en.html Properties Edito安装地址:http://proped ...

  3. DB2默认的事务及并发锁机制

    今天有点时间,试验了一下DB2的并发锁机制,结果,和MSSQL的差不多:1.DB2的缺省行为,事务以可执行的SQL开始,以COMMIT或ROLLBACK结束:2.DB2缺省是否提交,以工具的不同而不同 ...

  4. PHP:第四章——PHP数组添加,删除,插入,分割,合并,及运算符

    <pre> <?php header("Content-Type:text/html;charset=utf-8"); /*知识点一:赋值运算符 = 代码示例:数 ...

  5. js组件的写法

    工作之中的不足,报了js培训班,因为工作加班原因缺了几天课(js组件开发),现在拾起来补补 <!doctype html> <html> <head> <me ...

  6. ansible 删除路径下的多个文件[收集的参考]

    How to delete multiple files / directories in Ansible ansible - find, file modules to delete files a ...

  7. sping整合redis,以及做mybatis的第三方缓存

    一.spring整合redis Redis作为一个时下非常流行的NOSQL语言,不学一下有点过意不去. 背景:学习Redis用到的框架是maven+spring+mybatis(框架如何搭建这边就不叙 ...

  8. webservice之wsdl

    最近项目中需要将原来的通信协议改成webservice,由于业务需要,我们需要向server端传送数据,故server方提供给我们一个.wsdl文件,内容如下: WSDL即Web Services D ...

  9. node-webkit 入门

    下载node-webkit 点击这里: https://github.com/rogerwang/node-webkit 找到Downloads这一小节,然后下载对应平台的node-webkit预编译 ...

  10. UI基础:target...action设计模式,手势识别器.UIimageview

    使用target..action和delegate设计模式可以实现解耦.使代码更加优化. 手势识别器: 手势识别器:是对触摸事件做了封装,无需自己去判断某个手势是否触发,手势识别器本身起到了识别作用, ...