数位dp
sdau20163940
努力学习,天天向上!
展开
-
I - Horse Races (数位dp)
Petya likes horse racing very much. Horses numbered from l to r take part in the races. Petya wants to evaluate the probability of victory; for some reason, to do that he needs to know the amount of原创 2017-11-12 23:08:06 · 423 阅读 · 0 评论 -
X - Mountain Number (数位dp)
X - Mountain Number 代码:#include #include #include using namespace std; int t; int bit[25],l,r; int dp[20][10][2]; int dfs(int pos,int pre,int odd,int lead,int limi原创 2017-11-05 22:02:44 · 170 阅读 · 0 评论 -
F - Beautiful numbers (数位dp)
F - Beautiful numbers 题意:一个美丽数就是可以被它的每一位的数字整除的数。给定一个区间,求美丽数的个数。思路:一个数能被它的所有非零数位整除,则能被它们的最小公倍数整除,而1到9的最小公倍数为2520,数位DP时我们只需保存前面那些位的最小公倍数就可进行状态转移,到边界时就把所有位的lcm求出了,为了判断这个数能否被它的所有数位整除原创 2017-11-01 19:45:35 · 266 阅读 · 0 评论 -
M - windy数 (数位dp+前导0的判断)
M - windy数 思路:数位dp加上前导0的判断。注意状态是:abs(i-pre)>=2...代码:#include #include #include #include #include #include #include using namespace std;#define print(a) printf("%d", a)原创 2017-10-30 23:38:23 · 709 阅读 · 0 评论 -
H - Bomb (数位dp+模板)
H - Bomb 题意:求0到输入的n中有多少数字是包含49的。思路:很明显的数位dp,运用dfs,首先用sta记录一个状态,然后根据状态进行相应的运算,注意题目的数据范围,一开始光着急做题了,没注意到,导致WA了一发。。。唉。。。代码:#include #include #include #include typedef long long ll;u原创 2017-10-29 23:31:18 · 224 阅读 · 0 评论 -
G - B-number (数位dp)
G - B-number 第一个数位dp题目。。。 题意:给你一个数n,要你求出从1到n中有多少个数满足能被13整除且含有子串“13”思路:看求区间内某个条件的数的个数,所以首先想到数位dp,运用数位dp,开个三位数组 ,记录余数,状态等代码:#include #include #include #include typedef long lon原创 2017-10-29 22:28:15 · 255 阅读 · 0 评论 -
数位dp总结
转自:http://blog.csdn.net/wust_zzwh/article/details/52100392基础篇数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数。所谓数位dp,字面意思就是在数位上进行dp咯。数位还算是比较好听的名字,数位的含义:一个数有个位、十位、百位、千位......数的每一位就是数位啦!之所以要引入数位的转载 2017-10-24 23:23:14 · 180 阅读 · 0 评论 -
麻球繁衍(Tribbles 概率dp)
摘自:《算法竞赛入门经典-训练指南》-刘汝佳题意: 有K只麻球,每只生存一天就会死亡,每只麻球在死之前有可能生下一些麻球,生i个麻球的概率是pi,问m天后所有的麻球都死亡的概率是多少?思路: 涉及到全概率公式,因为麻球的各种活动都互不影响,所以现在只考虑一直麻球,我们假设f[i]是第i天全部都死亡的概率,那么f[i] = p0 + p1*f[i-1] + p2原创 2017-10-19 12:55:54 · 461 阅读 · 0 评论 -
Q - count 数字计数 (数位dp)
Q - count 数字计数 题目大意:求[a,b]间所有的整数中0~9每个数字出现了几次令f[i]为i位数(算前导零)中每个数出现的次数(一定是相同的,所以只记录一个就行了)有f[i]=f[i-1]*10+10^(i-1)然后照例十进制拆分其中计算[0,999...9]的时候要从1~9枚举最高位,然后转载 2017-11-07 23:55:51 · 813 阅读 · 0 评论 -
U - Investigation (数位dp)
U - Investigation 思路: 求在两个数n和m之间能够整除k,并且所有位数之和也能整除k的数的数量。拿出两个状态,这个数字和每位数来讨论就可以了。代码:#include #include #include #include #include using namespace std;int k;in原创 2017-11-06 22:40:42 · 157 阅读 · 0 评论 -
R - self 同类分布 (数位dp)
R - self 同类分布 思路是用暴力枚举所有可能的数字和 然后逐一进行验证此题需要判断两点,一是判断余数等于二是所有数字和等于设定的sum。代码:#include #include #include #include #include using namespace std;typedef long long原创 2017-11-06 23:56:41 · 310 阅读 · 0 评论 -
P - Mirror Number (数位dp)
P - Mirror Number 题意:求[a,b]中镜像回文的个数。 0 思路:数位dp,和前面所做过的求回文数的个数的差不多,但是要注意镜像回文满足的数字只有0,1,8三个,所以要在选出的回文数中继续进行判断。代码:#include #include #include#include using name原创 2017-11-12 21:57:09 · 245 阅读 · 0 评论 -
H - K-th Nya Number (数位dp)
Arcueid likes nya number very much. A nya number is the number which has exactly X fours and Y sevens(If X=2 and Y=3 , 172441277 and 47770142 are nya numbers.But 14777 is not a nya number ,because i原创 2017-11-12 20:34:12 · 223 阅读 · 0 评论 -
X - Bi-peak Number (数位dp+有上界也有下届)
A peak number is defined as continuous digits {D0, D1 … Dn-1} (D0 > 0 and n >= 3), which exist Dm (0 Di+1 (m A number is called bi-peak if it is a concatenation of two peak numbers. The s原创 2017-11-12 11:52:28 · 266 阅读 · 0 评论 -
T - Palindromic Numbers (数位dp)
分析:求区间内回文数的个数,问题关键在于新增加一个数组,用来记录前一半选了的数字代码:#include #include #include #include using namespace std; int a[20],t[20]; long long dp[20][20][2]; long long dfs(int pos,int sta1,int s,int原创 2017-11-11 21:04:38 · 227 阅读 · 0 评论 -
A - Amount of Degrees (数位dp)
代码:#include #include #include #include using namespace std;typedef long long LL;LL f[35][35]; LL x, y, b;int pos[35];int len;void init(){ memset(f, 0, sizeof(f)); f[0][0] = 1; for (int原创 2017-11-11 15:18:23 · 259 阅读 · 0 评论 -
C - Apocalypse Someday (数位dp+二分)
C - Apocalypse Someday 题意:找第n个含有666的数。很6啊。。。。思路;其他都好说,就是想二分问题上出了点小问题。。。这个题和基本的题型找出含有47的数字的数量差不多,这个是找出含有666的数字的数量。但是这个题不是问的数量有多少,而是问的第n大个,那个数量已经固定了,只需要算出1到某个数含有666的数量最接近n的那个数是什么,即可。也就是用原创 2017-11-11 15:06:28 · 211 阅读 · 0 评论 -
Y - odd-even number (数位dp模板)
Y - odd-even number 题意:一个数,每连续的奇数位以及连续的偶数位为一段,要求每一个奇数段(连续奇数组成的段)要有偶数个奇数,每一个偶数段(连续偶数组成的段)要有奇数个偶数,求区间[L,R]有多少个满足条件的。思路:dp[i][j] i代表位置,j代表状态,此题目中总共有五个状态,0代表前导零,1代表奇数为奇数个,2代表奇数为偶数,3代表偶原创 2017-11-09 00:09:09 · 233 阅读 · 0 评论 -
V - How Many Zeroes? (数位dp)
V - How Many Zeroes? 题意:求任意区间的数中0的出现次数思路:数位dp,注意判断是否是前导0 注意用长整型代码:#include #include #include #include #include using namespace std;typedef long long ll;int bit[20];ll d原创 2017-11-07 23:17:23 · 183 阅读 · 0 评论 -
Round Numbers(数位dp+dfs+记忆化模板)
Round NumbersTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 14777 Accepted: 5931DescriptionThe cows, as you know, have no fingers or thumbs and thus原创 2018-01-07 21:57:45 · 696 阅读 · 0 评论