大型补档补了一年

题目链接

考虑枚举月之数的数列和,然后展开dp预处理

设当前模数为 \(P\)

\(f[i][j][k]\) 表示一共有 i 位数字,数位和为 j,数值和 % P 的值为 K

\(f[1][i][i \% P]++\) 初始化 (\(0 <= i <= 9\))

枚举下一位数字 \(c\)

\(f[i + 1][j + c][(k + c * Pow[i]) % P] += f[i][j][k]\)

时间复杂度 \(O(N^2 * S * 10)\)

然后进行典型的数位 \(dp\)。

总复杂度上限是 \(O(N ^ 3 * S * 10)\) 大约是 \(5e7\) 的总量级,可以跑过~

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
const int N = 83, S = 10;
int L, R, Pow[S] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000};
int f[S][N][N], d[N], n;
void build(int P) {
memset(f, 0, sizeof f);
f[0][0][0] = 1;
for (int i = 0; i <= 9; i++) f[1][i][i % P]++;
for (int i = 1; i < S - 1; i++) {
for (int j = 0; j <= i * 9; j++) {
for (int k = 0; k < P; k++) {
for (int c = 0; c <= 9; c++) {
f[i + 1][j + c][(k + c * Pow[i]) % P] += f[i][j][k];
}
}
}
}
} int inline mod(int a, int b) { return (a % b + b) % b; }
int solve(int x, int P) {
if (x == 0) return 0;
n = 0;
while (x) d[++n] = x % 10, x /= 10;
int t = 0, q = 0, res = 0;
for (int i = n; i; i--) {
for (int j = 0; j < d[i]; j++)
if (P - t - j >= 0) res += f[i - 1][P - t - j][mod(P - q - Pow[i - 1] * j, P)];
t += d[i]; (q += d[i] * Pow[i - 1]) %= P;
if (i == 1 && q == 0 && t == P) res++;
}
return res;
} int main() {
scanf("%d%d", &L, &R);
int ans = 0;
for (int i = 1; i < N; i++) {
build(i);
ans += solve(R, i) - solve(L - 1, i);
}
printf("%d\n", ans);
return 0;
}

AcWing 311 .月之谜的更多相关文章

  1. Nescafé2 月之谜 题解

    月之谜 (mystery.pas/c/cpp) [题目描述] 打败了 Lord lsp 之后,由于 lqr 是一个心地善良的女孩子,她想净化 Lord lsp 黑化的心,使他变回到原来那个天然呆的 l ...

  2. 『月之谜 数位dp』

    月之谜 Description 打败了Lord lsp 之后,由 于lqr 是一个心地善良的女孩 子,她想净化Lord lsp 黑化的 心,使他变回到原来那个天然 呆的lsp--在倒霉的光之英 雄ap ...

  3. $BZOJ1799\ Luogu4127$ 月之谜 数位统计$DP$

    AcWing Description Sol 看了很久也没有完全理解直接$DP$的做法,然后发现了记搜的做法,觉得好棒! 这里是超棒的数位$DP$的记搜做法总结   看完仿佛就觉得自己入门了,但是就像 ...

  4. bzoj1799(洛谷4127)同类分布(月之谜)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1799 https://www.luogu.org/problemnew/show/P4127 ...

  5. AcWing:244. 谜一样的牛(树状数组 + 二分)

    有n头奶牛,已知它们的身高为 1~n 且各不相同,但不知道每头奶牛的具体身高. 现在这n头奶牛站成一列,已知第i头牛前面有AiAi头牛比它低,求每头奶牛的身高. 输入格式 第1行:输入整数n. 第2. ...

  6. 2021record

    2021-10-14 P2577 [ZJOI2004]午餐 2021-10-13 CF815C Karen and Supermarket(小小紫题,可笑可笑) P6748 『MdOI R3』Fall ...

  7. 0x5C 数位统计DP

    怎么说,数位DP还是我的噩梦啊,细节太恐怖了. 但是这章感觉又和之前的学的数位DP有差异?(应该是用DP预处理降低时间复杂度,好劲啊,不过以前都是记忆化搜索的应该不会差多少) poj3208 f[i] ...

  8. AcWing 244. 谜一样的牛 (树状数组+二分)打卡

    题目:https://www.acwing.com/problem/content/245/ 题意:有n只牛,现在他们按一种顺序排好,现在知道每只牛前面有几只牛比自己低,牛的身高是1-n,现在求每只牛 ...

  9. AcWing 244. 谜一样的牛|树状数组

    传送门 题目描述 有n头奶牛,已知它们的身高为 1~n 且各不相同,但不知道每头奶牛的具体身高. 现在这n头奶牛站成一列,已知第i头牛前面有Ai头牛比它低,求每头奶牛的身高. 输入格式 第1行:输入整 ...

随机推荐

  1. MySQL视图详细介绍

    前言: 在MySQL中,视图可能是我们最常用的数据库对象之一了.那么你知道视图和表的区别吗?你知道创建及使用视图要注意哪些点吗?可能很多人对视图只是一知半解,想详细了解视图的同学看过来哟,本篇文章会详 ...

  2. 线程与更新UI,消除偏见,细谈原理

    前言 相信不少读者都阅读过相类似的文章了,但是我还是想完整的把这之间的关系梳理清楚,细节聊好,希望你也能从中学到一些. 进入正题,大家应该都听过这样一句话--"UI更新要在主线程,子线程更新 ...

  3. P类问题、NP类问题与NPC类问题

    (转载自作者 "Matrix67原创" 的文章,链接为:http://www.matrix67.com/blog/archives/105) 你会经常看到网上出现"这怎么 ...

  4. JWT鉴权

    一.HTTP基本认证 Basic Authentication--当浏览器访问使用基本认证的网站的时候, 浏览器会提示你输入用户名和密码. http auth的过程: 客户端发送http请求 服务器发 ...

  5. 测试_QTP原理

    QTP是基于GUI界面的自动化测试工具,用于系统的功能测试.   QTP录制的是鼠标和键盘的消息.QTP录制回放时基于windows操作系统的消息机制.QTP在录制时监听应用程序的消息,监听到之后把消 ...

  6. C# 简易的串口监视上位机实现

    实现上位机和下位机之间的通信,通常使用的是串口通信,接下来实现一个通过上位机和串口调试助手来完成串口通信测试. 首先创建一个WInfrom窗体应用工程文件,创建过程可参考https://www.cnb ...

  7. 教你在CorelDRAW中制作水印

    水印是一种数字保护的手段,在图像上添加水印即能证明本人的版权,还能对版权的保护做出贡献.也就是在图片上打上半透明的标记,因其具有透明和阴影的特性,使之不管在较为阴暗或明亮的图片上都能完美使用,嵌入的水 ...

  8. css3系列之详解border-radius

    border-radius border-radius 几种写法: 1.border-radius: 50%; 以正方形为例子, 这样写就是设置 4个角 为50%. 2.border-radius: ...

  9. 对于MySQL数据库四种隔离等级

    对于MySQL事务有四种隔离级别,分别是以下四种: 1.读未提交 2.读提交 3.可重复读 4.串行化(加锁) 对于隔离我们都是说在并发的情况下发生的事情,读取的数据在并发的情况下会发生什么情况. 并 ...

  10. SpringBoot整合Elasticsearch7

    SpringBoot连接ElasticSearch有以下种方式, TransportClient,9300端口,在 7.x 中已经被弃用,据说在8.x 中将完全删除 restClient,9200端口 ...