强烈谴责只有 125MB 的行为,然后我没删调试是个什么 SB。。。

闲话少说,切入正题——


首先看到取余和数字是可以排列的,我们自然而然的想到了数位 dp,但是很显然这题不是的数位 dp 通常解决的是 \(1\sim k\) 之间符合要求的数这里是恰好符合的。

发现 \(s\) 长度很小,只有 \(15\),所以考虑状压。

然后这个时候 SX 还没看出来是状压足以见得他是个瞎子了!

如果数据范围很小还是个 dp 一定要考虑状压!!!!!

如果数据范围很小还是个 dp 一定要考虑状压!!!!!

也就 SX 这种带聪明想不到状压了吧/qd


然后就很显然要记录余数,设 \(f_{i, S}\) 为选择状态为 \(S\) 余数为 \(i\) 的方案数。

如果我们要加入一个数字,首先他要不在 \(S\) 内(一直没判这个调了很长时间,所以我是压根不会状压石锤,这种弱智玩意儿都没看出来),然后转移很显然 \(f_{(10i + a_j)\bmod d, S|(1<<j)} += f_{i, S}\)。

重复数字除以它出现次数阶乘即可。

代码:

//SIXIANG
#include <iostream>
#include <string>
#include <algorithm>
#include <cstring>
#define MAXN 1000
#define int long long
#define QWQ cout << "QWQ" << endl;
using namespace std;
int f[MAXN + 10][(1 << 10) + 10], arr[10], t[10], frac[16];
void pre() {
frac[0] = 1;
for(int p = 1; p <= 16; p++) frac[p] = frac[p - 1] * p;
}
signed main() {
pre();
int T; cin >> T;
string str; int d;
while(T--) {
cin >> str >> d;
memset(t, 0, sizeof(t));
memset(arr, 0, sizeof(arr));
memset(f, 0, sizeof(f));
int i = 0;
for(int p = 0; p < str.size(); p++)
t[str[p] - '0']++, arr[p] = str[p] - '0'; f[0][0] = 1;
int len = str.size();
for(int S = 0; S < (1 << len); S++)
for(int p = 0; p < len; p++)
for(int i = 0; i < d; i++)
if(!((S >> p) & 1))
f[(10 * i + arr[p]) % d][S | (1 << p)] += f[i][S];
for(int p = 0; p <= 9; p++)
f[0][(1 << len) - 1] /= frac[t[p]]; cout << f[0][(1 << len) - 1] << endl;
}
}

顺便提一嘴,这里面枚举 S 要放在外层循环。因为显然余数一维不可能作为阶段。

以及 500ms 确实有点卡。

最新文章

  1. 菜鸟浅析JAVA,.NET,C/C++的区别
  2. 【转】浅谈MVC与三层架构
  3. 基于DevExpress的Winform程序安装包的制作
  4. CocoaPods安装及使用详情
  5. linux环境下安装oracle数据库 原文在卡卡100http://www.cnblogs.com/kaka100
  6. lintcode-【简单题】链表求和
  7. define与typedef 区别
  8. css实现div悬浮层,始终停留在浏览器的最下方,不随页面的滚动条滚动改变位置或消失
  9. android 工具类之SharePreference
  10. 04、NetCore2.0下Web应用之Startup源码解析
  11. [POI2012]Odległość
  12. java 编译
  13. 设计Optaplanner下实时规划服务的失败经历
  14. Namenode启动报错Operation category JOURNAL is not supported in state standby
  15. Linux 命令 —— iconv 转换编码
  16. AI学习吧-Redis操作-事务、订阅
  17. SQL SERVER 事务相关
  18. win10 死机 无响应
  19. 233 Matrix(hdu5015 矩阵)
  20. unity简易ui框架

热门文章

  1. 【极客时间】大数据概述及HDFS介绍
  2. JavaEE Day08 HTML&amp;CSS
  3. 【SQL基础】【关键字大写】条件查询:比较、不等于、IN、为空、BETWEEN
  4. web框架推导 wsgiref模块 jinja2模板语法 django框架简介 django基本操作
  5. PTA散列表平方探测法解决冲突
  6. 8个Spring事务失效的场景,你碰到过几种?
  7. 二阶段目标检测网络-Cascade RCNN 详解
  8. JavaScript:对象:如何去遍历输出一个对象的属性?语句for-in
  9. prometheus-监控docker服务器
  10. 沁恒微(WCH)CH395/392配置使用,代码指南 网路接口芯片 CH395 CH392