题解 [AHOI2009]同类分布
不理解之前为什么不会哈哈哈哈哈哈哈哈。
我是个天才(喜
显然记录 \(f_{i, t, r, s, limit, lead}\),\(i, limit, lead\) 是数位 dp 的套路,\(t\) 代表被除数,就是原数,\(r\) 代表余数,\(s\) 代表除数。
我们会发现 \(s\) 直接转移非常难做,而且它很小,最多才 \(9 \times 18 = 162\),直接枚举。
然后我们会发现 \(t\) 非常大怎么办 \(t\) 不重要就是 \(t\) 的各个数位和重要,数位和顶多 162,我们将 \(t\) 改为各个数位和即可。
然后我们就可以把 \(s\) 这一维删掉。
转移显而易见。
开 longlong+O2 即可
//SIXIANG
#include <iostream>
#include <cstring>
#define MAXN 10000
#define ll long long
#define QWQ cout << "QWQ" << endl;
using namespace std;
ll f[20][200][200][2][2];
int tot = 0, arr[MAXN + 10];
int pika(int i, int t, int r, bool limit, bool lead, int qaq) {
if(!i) {
if(!r && t == qaq) return 1;
else return 0;
}
if(f[i][t][r][limit][lead] != -1) return f[i][t][r][limit][lead];
ll rest = 0;
int lim = ((limit) ? (arr[i]) : 9);
for(int p = 0; p <= lim; p++)
rest = (rest + pika(i - 1, t + p, (10 * r + p) % qaq, limit && (p == arr[i]), lead && (!p), qaq));
f[i][t][r][limit][lead] = rest;
return rest;
}
ll solve(int x) {
memset(arr, 0, sizeof(arr));
tot = 0;
do {
arr[++tot] = x % 10;
x /= 10;
} while(x);
ll sum = 0;
for(int p = 1; p <= 9 * tot; p++) {
memset(f, -1, sizeof(f));
sum += pika(tot, 0, 0, 1, 1, p);
}
return sum;
}
signed main() {
int l, r;
cin >> l >> r;
cout << solve(r) - solve(l - 1) << endl;
}
题解 [AHOI2009]同类分布的更多相关文章
- 【BZOJ1799】[AHOI2009]同类分布(动态规划)
[BZOJ1799][AHOI2009]同类分布(动态规划) 题面 BZOJ 洛谷 题解 很容易想到数位\(dp\),然而数字和整除原数似乎不好记录.没关系,直接枚举数字和就好了,这样子就可以把整除原 ...
- P4127 [AHOI2009]同类分布
P4127 [AHOI2009]同类分布 题解 好的,敲上数位DP DFS板子 记录一下填的各位数字之和 sum ,然后记录一下原数 yuan 最后判断一下 yuan%sum==0 不就好啦??? ...
- 洛谷 P4127 [AHOI2009]同类分布 解题报告
P4127 [AHOI2009]同类分布 题目描述 给出两个数\(a,b\),求出\([a,b]\)中各位数字之和能整除原数的数的个数. 说明 对于所有的数据,\(1 ≤ a ≤ b ≤ 10^{18 ...
- [BZOJ1799][AHOI2009]同类分布(数位DP)
1799: [Ahoi2009]self 同类分布 Time Limit: 50 Sec Memory Limit: 64 MBSubmit: 1635 Solved: 728[Submit][S ...
- 【题解】AHOI2009同类分布
好开心呀~果然只有不看题解做出来的题目才会真正的有一种骄傲与满足吧ヾ(๑╹◡╹)ノ" 实际上这题只要顺藤摸瓜就可以了.首先按照数位dp的套路,有两维想必是省不掉:1.当前dp到到的位数:2. ...
- 【[AHOI2009]同类分布】
这是一篇有些赖皮的题解 (如果不赖皮的话,bzoj上也是能卡过去的) 首先由于我这个非常\(sb\)的方法复杂度高达\(O(171^4)\),所以面对极限的\(1e18\)的数据实在是卡死了 但是这个 ...
- 洛谷 P4127 [AHOI2009]同类分布
题意简述 求l~r之间各位数字之和能整除原数的数的个数. 题解思路 数位DP 代码 #include <cstdio> #include <cstring> typedef l ...
- [AHOI2009]同类分布
题目大意: 问在区间[l,r]内的正整数中,有多少数能被其个位数字之和整除. 思路: 数位DP. 极端情况下,每一位都是9,所以各位数字之和不超过9*18.(为了方便这里用了9*19) f[i][j] ...
- [luogu4127 AHOI2009] 同类分布 (数位dp)
传送门 Solution 裸数位dp,空间存不下只能枚举数字具体是什么 注意memset最好为-1,不要是0,有很多状态答案为0 Code //By Menteur_Hxy #include < ...
- 【数位DP】【P4127】[AHOI2009]同类分布
Description 给出两个数 \(a,~b\) 求出 \([a~,b]\) 中各位数字之和能整除原数的数的个数. Limitations \(1 \leq a,~b \leq 10^{18}\) ...
随机推荐
- Java 中你绝对没用过的一个关键字?
layout: post categories: Java title: Java 中你绝对没用过的一个关键字? tagline: by 子悠 tags: 子悠 前面的文章给大家介绍了如何自定义一个不 ...
- day12 多线程1.进程与线程 & 2.线程生命周期 & 3.线程同步机制
day12 bigDecimal,用于计算钱的数据类型 多线程 线程与进程 进程 1)执行中的应用程序 2)一个进程可以包含一个或者多个线程 3)一个进程至少要包含一个线程(如main方法) 线程 线 ...
- 【Java SE进阶】Day03 数据结构、List、Set、Collections
一.数据结构 1.红黑树 根黑子黑红子黑 接近平衡树(左右孩子数量相同),查询叶子快慢次数不超过2倍 二.List 1.概述 元素有序 线性存储 带有索引 可以重复 2.常用方法 增:add(I,E) ...
- 【每日一题】【回溯backtrace】N皇后
n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案. 每一种解法包含一个不同的 n 皇后问 ...
- 【实时数仓】Day00:数据流程、课程内容、框架结构、知识点总结
一.数据流程 1.离线数仓 2.实时数仓 二.课程内容 1.数据采集层(ODS) 2.DWD层与DIM层数据准备 3.DWM层业务实现 4.DWS层业务实现 5.ClickHouse 6.数据可视化接 ...
- 云数据库FinOps实战复盘
历时三个多月的HBase成本优化项目按照预期交付了,HBase云数据库月度成本下降了32.5%,超出预期达成目标. 我们对本次HBase成本优化项目进行深度复盘,并进一步尝试总结云数据库的FinOps ...
- 当 xxl-job 遇上 docker → 它晕了,但我不能乱!
开心一刻 某次住酒店,晚上十点多叫了个外卖 过了一阵儿,外卖到了 因为酒店电梯要刷卡,所以我下楼去接 到了电梯口看到个模样不错的妹纸 我:是你么? 妹纸愣了下:嗯! 于是拉上进电梯回房间,正准备开始呢 ...
- python循环结构之for循环
在python中,for循环是应用非常广的循环语句,遍历字典.遍历列表等等... # for语句结构 for 遍历 in 序列: 执行语句 遍历字典 lipsticks = {"Chanel ...
- WCH以太网相关芯片资料总结
网络产品线产品分类 1.接口控制类.CH395Q http://www.wch.cn/search?t=all&q=395CH395LCH392F h ...
- PKUSC2022 润摆寄
Day 0 模拟赛的题目竟是 寄 摆 润!预示着我的 PKUSC. Day 1 猜中主角(指九条可怜)原来都是芳文厨 看错时间以为考 \(5h\),于是告诉自己 优势在我可以慢慢做. T1 很显然的 ...