[BZOJ1799][Ahoi2009]self 同类分布(数位dp)
题目描述
给出两个数 a,ba,b ,求出 [a,b][a,b] 中各位数字之和能整除原数的数的个数。
输入输出格式
输入格式:
一行,两个整数 aa 和 bb
输出格式:
一个整数,表示答案
输入输出样例
10 19
3
说明
对于所有的数据, 1 ≤ a ≤ b ≤ 10^{18}1≤a≤b≤1018
题解
数位dp
至于怎么判是否整除
我们可以考虑枚举所有位之和是多少
然后记录一下当前数模所有位之和的余数
如果为$0$说明可行
1 //minamoto 2 #include<cstdio> 3 #include<cstring> 4 #define ll long long 5 using namespace std; 6 ll dp[25][205][205],a,b; 7 int num[25],len; 8 ll dfs(int pos,int p,int s1,int s2,bool flag){ 9 if(!pos) return s1==p&&s2==0; 10 if(s1>p||s1+pos*9<p) return 0; 11 if((~dp[pos][s1][s2])&&(!flag)) return dp[pos][s1][s2]; 12 ll res=0;int lim=flag?num[pos]:9; 13 for(int i=0;i<=lim;++i) 14 res+=dfs(pos-1,p,s1+i,(s2*10+i)%p,flag&&i==lim); 15 if(!flag) dp[pos][s1][s2]=res; 16 return res; 17 } 18 ll solve(ll x){ 19 len=0; 20 for(;x;x/=10) num[++len]=x%10; 21 if(!len) return 0ll; 22 ll res=0; 23 for(int i=1;i<=len*9;++i){ 24 memset(dp,-1,sizeof(dp)); 25 res+=dfs(len,i,0,0,1); 26 } 27 return res; 28 } 29 int main(){ 30 //freopen("testdata.in","r",stdin); 31 scanf("%lld%lld",&a,&b); 32 printf("%lld\n",solve(b)-solve(a-1)); 33 return 0; 34 }
转载于:https://www.cnblogs.com/bztMinamoto/p/9540403.html
[BZOJ1799][Ahoi2009]self 同类分布(数位dp)相关推荐
- P4127 [AHOI2009]同类分布 数位dp + 对状态剪枝
传送门 文章目录 题意: 思路: 题意: 思路: 比较套路的题,首先也有个明显的状态f[pos][num][sum]f[pos][num][sum]f[pos][num][sum]表示到了pospos ...
- bzoj 1799: [Ahoi2009]self 同类分布(数位DP)
1799: [Ahoi2009]self 同类分布 Time Limit: 50 Sec Memory Limit: 64 MB Submit: 1358 Solved: 592 [Submit] ...
- BZOJ 1799 [Ahoi2009] self 同类分布(数位DP)【BZOJ千题计划(quexin】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/1799(样例时限设置有问题,应该为 2 ...
- P4127 [AHOI2009]同类分布(数位dp)
洛谷传送门 文章目录 题目描述 解析 代码 题目描述 给出两个数a,b求出[a,b]中各位数字之和能整除原数的数的个数. 1<=a<=b<=1018 解析 容易想到数位dp 但本题的 ...
- bzoj1799 数位dp
HYSBZ - 1799 题意:给出a,b,求出[a,b]中各位数字之和能整除原数的数的个数. 思路:数位dp,比较容易想到是数位dp,关键是dp式比较难想到,数位dp说到底是一个记忆化搜索的过程,d ...
- P4127 [AHOI2009]同类分布
链接:https://www.luogu.org/problemnew/show/P4127 题目描述 给出两个数 a,ba,b ,求出 [a,b][a,b] 中各位数字之和能整除原数的数的个数. 输 ...
- 洛谷 P4127 [AHOI2009]同类分布
题意简述 求l~r之间各位数字之和能整除原数的数的个数. 题解思路 数位DP 代码 #include <cstdio> #include <cstring> typedef l ...
- [AHOI2009]同类分布
题目描述 给出两个数a,b,求出[a,b]中各位数字之和能整除原数的数的个数. 输入格式 一行,两个整数a和b 输出格式 一个整数,表示答案 输入输出样例 输入 #1 10 19 输出 #1 3 说明 ...
- 数位dp真·浅谈 By cellur925
预警:由于是从$Vergil$学长那里和$Mathison$大神那里学来的,所以清一色记忆化搜索!qwq 巨佬的数位dp讲解(未来的咕咕日报头条): https://www.luogu.org/blo ...
最新文章
- 遇到的浏览器兼容问题及应对方法
- SQL server2008 无法启动调试存储过程
- ignite windows无法访问linux ignite集群_Linux常见命令
- leetcode算法题--字符串转换整数 (atoi)
- python结束线程池正在运行的线程_python之线程与线程池
- JAVA——后端Vue动态路由配置类JavaBean封装
- C++11库中 steady_clock , system_clock和high_resolution_clock的区别
- babel 用法及其 .babelrc 的配置详解,想做前端架构,拒绝一知半解...
- 《Cracking the Coding Interview》——第9章:递归和动态规划——题目8
- 伯克利:serverless是下一代计算范式
- C语言 输入的注意事项 EOF的应用
- profibus 主站软件_PROFIBUS网络的DP主站与DP从站
- cookie与Session的区别,以及jQuery怎样操作cookie和Session
- 粒子群优化算法(PSO)附代码
- 怎么在win10服务器上搭建网站,win10怎么搭建web服务器 win10搭建web服务器的方法...
- 每个人都可以做到:月入30000的秘籍!
- 搭建个人网站(免备案)
- mysql数据库统计人数_统计人数 数据库
- 已成功与服务器建立连接,但是在登录过程中发生错误。
- apache的基本使用
热门文章
- python中函数和类的区别_Python中函数和方法的区别
- vue项目封装axios
- JS页面跳转的各种形式
- 三维重建:Kinect几何映射-SDK景深数据处理
- java语言程序设计答案_《java语言程序设计》练习题及答案
- Linux gcc编译c/c++基本过程
- UVA 1625 Color Length DP
- 微软反垄断案新突破 Win10系统或需剥离可信计算
- ssh-add Could not open a connection to your authentication agent.
- android开源项目框架大全:《IT蓝豹》