![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数位dp
_pkm_
love coding
展开
-
HDU2089 不要62(数位dp入门)
题目链接 题意:询问一个区间[L,R]里面,数字含有4或者62的 分析:数位dp的入门题目,一个不错的学习资源 还有一个详细解说 基本上就是这样了,上面对dfs的参数及每一句话分析的很清楚了。基本上定义好状态就可以了。#include<bits/stdc++.h> using namespace std; #define LL long long #define cl(a,b) memset原创 2016-03-16 16:44:44 · 421 阅读 · 0 评论 -
HDU3555 Bomb (数位dp)
题目链接 题意:给你一个数,问从0到这个数x之间,含有多少个49 分析:很直接的数位dp。 dfs(len,is4,isMax):表示当前考虑第len位,上一位是不是4,然后是不是到达上限。#include<bits/stdc++.h> using namespace std; #define LL long long #define cl(a,b) memset(a,b,sizeof(a))原创 2016-03-16 16:49:55 · 340 阅读 · 0 评论 -
HDU 4352 XHXJ's LIS(状态压缩+数位dp)
题目链接 求区间里面的数,满足数位上的数是严格的长度为k的上升子序列的个数上升子序列使用nlogn的计算方式,因为是严格的上升子序列,所以只会有0-9,10个数字。在某一个上升的子序列中,每个数字只会出现一次,使用f[i][s]:表示将数字i加入状态s可以到达的新的状态s’,这个f函数,可以直接暴力预处理,然后就是裸的数位dp了#include<cstdio> #include<algorithm原创 2016-09-22 13:45:54 · 280 阅读 · 0 评论 -
Codeforces Beta Round #51 D. Beautiful numbers(数位dp)
题目链接问区间[L,R] 之间有多少个数满足,这个数能够整除这个数的每一个数位,比如36可以整除3和6,所以是符合要求的数字。直接看来,一个数每一位还没有确定的时候,就无法知道这个数能不能整除自己的每一位。假如这个数是可以整除自己的每一位,也就是说这个数是自己每一位的公倍数,比如一个满足的数X组成是abc的形式,那么X是a的倍数,b的倍数,c的倍数,也就是X%lcm(a,b,c)==0。然后1-9的原创 2016-09-22 10:36:44 · 282 阅读 · 0 评论 -
HDU 5898 odd-even number(数位dp)
题目链接题意就是,数位是奇数的连续的长度是偶数,数位是偶数的连续的长度是奇数,比如 2,4,6, 8,11,13,15,17。。直接数位dp, 加一个z标识,是不是前缀都是0。 dp[i][s][len]:第i位是奇数还是偶数,以及连续的长度。#include <bits/stdc++.h> #define LL long long using namespace std; #define cl(原创 2016-09-21 15:08:46 · 322 阅读 · 0 评论