数位DP
文章平均质量分 89
九野的博客
这个作者很懒,什么都没留下…
展开
-
Codeforces 55D Beautiful numbers 数位dp(入门
题目链接:点击打开链接题意:我们认为一个数 num 能被每一位上的数字整除(expect 0) 那么这个数num就是合法的。给出区间[l,r] ,问这个区间内有多少个合法的数。首先solve(long x) 返回 [0, x] 内的合法个数,答案就是 solve(r) - solve(l-1);以1234567为例flag表示当前这位是能任意填,还是只能填若当前搜索的是原创 2015-03-29 22:57:54 · 1433 阅读 · 0 评论 -
HDU 4352 XHXJ's LIS 数位dp
题目链接:点击打开链接题意:一个数自身的最长子序列=每一位都是一个数字然后求的LIS问区间内有多少个数 自身的最长子序列==k思路:因为自身的最长子序列至多=10,且由0~9组成,所以状压10个二进制表示0~9中哪些数字已经用过dp[i][j] 表示长度为i的数字,最长子序列中出现的数字状态j的方法数。由于询问数=K,也存下来避免重复计算。#includ原创 2015-04-01 21:05:20 · 1238 阅读 · 0 评论 -
Codeforces 54C First Digit Law 数位dp+概率dp
题目链接:点击打开链接题意:给定n个区间下面n个区间从每个区间中任选一个数。则一共选出了n个数给出K(问选出的n个数中 最高位是1的个数 占n个数的百分之K以上的概率是多少。先求出对于第i个区间 ,选出的数最高位是1的概率P[i]dp[i][j] 表示前i个数选了j个最高位是1的概率.///////////////////////////////////原创 2015-03-31 14:13:05 · 1223 阅读 · 0 评论 -
POJ 3252 Round Numbers 数位dp(入门
题目链接:点击打开链接题意:给定一个区间,求区间内有多少个合法数(当这个数的二进制中0的个数>=1的个数称为合法数 二进制无前导0)思路:cnt[i]表示二进制长度为i位(即最高位为1,其他位任意)时的合法数个数。sum[i] 就是二进制长度然后从最高位枚举到低位即可。维护当前0的个数。#include #include #include原创 2015-04-02 21:56:16 · 1473 阅读 · 0 评论 -
SPOJ MYQ10 Mirror Number 数位dp
题目链接:点击打开链接MYQ10 - Mirror NumberA number is called a Mirror number if on lateral inversion, it gives the same number i.e it looks the same in a mirror. For example 101 is a mirror number whi原创 2015-03-31 22:44:29 · 1026 阅读 · 0 评论 -
HDU 2089 不要62 数位dp(入门
题目链接:点击打开链接中文题。问区间内有多少个合法数字(一个数是合法数字须满足1、不含4 ,2、每个6后面都不是2dp[i][0]表示长度为i的数字中,最高位不为6时的合法个数, dp[i][1]表示长度为i的数字中最高位是6的合法个数。#include #include #include #include using namespace std;typedef原创 2015-04-01 15:44:32 · 1244 阅读 · 0 评论