数位DP
EMber _
人但有追求,世界亦会让路。
展开
-
BZOJ1026 SCOI2009WINDY数
Description windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道, 在A和B之间,包括A和B,总共有多少个windy数?Input 包含两个整数,A B。Output 一个整数Sample Input【输入样例一】1 10【输入样例二】25 50 Sample Output【输出样例一】9【输出样例二】20 HI原创 2017-02-19 08:37:34 · 360 阅读 · 0 评论 -
51nod1232 完美数 数位DP
如果一个数能够被组成它的各个非0数字整除,则称它是完美数。例如:1-9都是完美数,10,11,12,101都是完美数,但是13就不是完美数(因为13不能被数字3整除)。 现在给定正整数x,y,求x和y之间(包含x和y的闭区间)共有多少完美数。一个数能整除他的所有位上的数,也就是说要整除所有位置上的数字的lcm。 那么设f[i][j][k]表示做到第i位,模2520意义下数字为j,lcm为第k个的原创 2017-11-10 10:21:18 · 661 阅读 · 0 评论 -
Atcoder Regular Contest 084
题意:给出一个数k,求k的倍数中的一个数,使得这个数的数位和最小。k<=1e5. 感觉做这题智商被碾压了,完全想不到spfa的做法,比赛的时候打数位dp打到倦生都过不去。。 先讲spfa做法:从1开始,向x+1连边,代价为数位差,也就是1,或者向x*10,代价为0,注意是在%k意义下,那么答案就是dis[0]+1,即到达k的倍数中最小的路径。#include<cstdio>#include<c原创 2017-11-07 22:00:38 · 293 阅读 · 0 评论 -
JZOJ5379. 【NOIP2017提高A组模拟9.21】Victor爱数字 数位DP
题意:求a,b的区间内有多少个数字,他中间不包含回文串。a,b<=1e18 智障预定。 一开始觉得这不是裸题吗,随便记录一下前面或者后面两个就好了,然后感觉十分模板,然后打了个windy数的模板以后开始调,刚开始还好,然后发现边界处理有点问题,然后觉得不妥,xjb调着调着样例都过不了了,然后直接掀桌弃疗。 主要是按照那题的方法一口气做到最后,边界上面总是会少计算一个,而且是每一部分少计算一个,原创 2017-09-22 21:01:13 · 305 阅读 · 0 评论 -
5332. 【NOIP2017提高A组模拟8.23】密码 AC自动机+数位DP
题意:求x-y之间有多少个数字包含至少k个密钥,密钥给出,x-y的数位比500小。 老年选手,这种题都不会做了,我退群吧。 就是随便AC自动机dp啊。。。我太废了。 设f[i][j][k][0/1]表示匹配到串的第i个节点,AC自动机上跑到了j,已经匹配了k个密钥, 0/1表示我之前匹配的哪些数位是否完全匹配某些密钥。 所以1可以转化为1或0,0只能转化0,然后xjbDP就好。。#incl原创 2017-08-23 20:35:24 · 277 阅读 · 0 评论 -
2017百度之星 复赛
作为一只菜鸡,这可能是我OI生涯中最后一次打百度之星了,希望明年这个时候能不退役(虽然不大可能)开始贴题解吧。会持续更新。1001 Arithmetic of Bomb 煞笔模拟题,1A#include<cstdio>#include<algorithm>#include<cstring>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i原创 2017-08-18 21:36:12 · 1176 阅读 · 0 评论 -
bzoj3209 花神的数论题 数位DP
一开始想的是先预处理出n位的答案,因为假设当前给出的数x有y位,那么y-1位的答案是固定的,我只要处理y位的答案就可以了,问题是这样太复杂。。。 设f[i][j]表示i位有j个1的答案,那么明显有f[i][j]=f[i-1][j]+f[i-1][j-1],表示第i位选0或1. 然后最后统计一下答案,就是每一种出现了多少次。。其实挺简单的,基本想出来了,但是数位dp不熟,想的复杂了。#includ原创 2017-07-25 16:12:54 · 282 阅读 · 0 评论 -
bzoj1662[Usaco2006 Nov]Round Numbers 圆环数&&bzojAc数100达成!
作为我AC的第100道bzoj题,当然要立个标志辣~~ 分析:这题没那么简单,一开始分析了一波性质,觉得不是dp就是组合数,,结果发现两种做法都有,但是组合数的有点蒙蔽,然后就写了记忆化搜索,然后wa了1w年,只能膜题解。。#include<cstdio>#include<algorithm>#include<cstring>#define fo(i,a,b) for(int i=a;i<=原创 2017-03-10 20:37:31 · 413 阅读 · 0 评论 -
51nod 完美消除 DP
定义数的消除操作为选定[L,R,x],如果数的第L到第R位上的数字都大于等于x,并且这些数都相等,那么该操作是合法的(从低位到高位编号,个位是第一位,百位是第二位……),然后将这些位数上的数减x;否则就是不合法的,不能进行操作。对一个数操作最少的次数使得这个数变成0,这个操作次数称为该数的最小操作数。如:1232的最小操作数为3,一个合法解是[2,2,1],[1,3,2],[4,4,1]。 求L~原创 2017-02-10 21:45:00 · 407 阅读 · 0 评论 -
bzoj1833[ZJOI2010]count 数字计数 数位DP
题意:求l,r中0-9各个数字的出现次数。 好像是数位DP经典题。。设f[i][j][k]表示做到第i位,当前计算数字j,前i-1位已经出现的次数为k的总出现次数。直接记忆化搜索即可,注意一下前导0.#include<cstdio>#include<cstring>#include<algorithm>#define fo(i,a,b) for(int i=a;i<=b;i++)#defi原创 2017-11-10 12:33:30 · 348 阅读 · 0 评论