动态规划 - 数位dp
Crossing over
这个作者很懒,什么都没留下…
展开
-
HDU 3652 B-number
传送门数位dp。有一种数,能被“13”整除而且数位里包含“13”,求[1,n]中这种数的个数。for short是简称的意思。之前求过数位里不包含“XX”的,中途判断就可以了。但如果求的是包含的个数,要么取反、要么只能最后判断。以下几点。这道题要用三维状态,两个条件各用一维。这两个条件都是运行到最后一位(反正大概是最后)才能判断出来。对包含“13”的判断,设计三个状态,分别表示:之...原创 2019-07-07 21:59:10 · 179 阅读 · 0 评论 -
HDU 3709 Balanced Number
传送门数位dp。(这题比较牛批)给你一个数,如果能选取这个数的某个数位作为支点(pivot),使得支点左右两边的各个数位的加权和相等(不包括支点)(权值为该数位到支点的距离),那么就称这个数为平衡数。然后问你[x,y]中有几个平衡数。举个例子,4139是平衡数(以3为支点),20是平衡数(以2为支点)。。。以下几点:将题目条件转化为一个在各个数位上连续计算的公式。就像HDU 4734那...原创 2019-07-07 23:22:48 · 245 阅读 · 1 评论 -
CCF CSP 201312 4.有趣的数
数位dp。这种题光看代码真是头疼,想了一个小时才想明白当时的思路。思路如下:题目问你x位有趣的数有多少个,记为c[x],那么就要想出来c[x]怎么用c[x-1]表示。x位有趣的数一定都可以由一个x-1位的数m在末尾添加一个数字而构造出来,分为两种情况:m是有趣的数可以想到,只能在末尾添加1或3,这两种添加方式都一定有效。m不是有趣的数若在m后添加一个数字能使其变为有趣的数,则m一...原创 2019-06-29 23:10:51 · 343 阅读 · 0 评论 -
HDU 2089 不要62
传送门数位dp。给一个左闭右闭区间,统计个数。dp[i][j]表示当前从第i位枚举到最低位(第0位)、在j状态下符合条件的个数。j表示第i+1位是不是6。初识数位dp,说几点看法。之所以要设计这么个dp数组,就是为了重复利用(记忆化搜索)。不这么干的话,每种i,j的组合都可能要被计算多次。现在只用第一次计算,然后再碰见这样的i,j组合就不用再算了。当然,前提是不在limit模式下。...原创 2019-07-03 22:03:18 · 79 阅读 · 0 评论 -
HDU 3555 Bomb
传送门数位dp。给一个N,问你从[1,N]中包含49的数的个数。主要有两点。solve(x)求的是[0,x]中不包含49的个数(一检测到“49”就continue了)这题要用__int64,这玩意linux还用不了,所以定义一个typedef是好习惯,方便改。#include <cstdio>#include <iostream>#include <...原创 2019-07-03 22:19:20 · 78 阅读 · 0 评论 -
HDU 4734 F(x)
传送门数位dp。给一个函数F(x),然后问你对于[0,B]中的每个数x,满足F(x)<=F(A)的x的个数。inclusive表示闭区间。可以看出,题目定义的这个函数和每个数位相关。所以,在对每个数位进行dfs的过程中,随着这个数一点点被确定,这个数的F(x)也逐渐被确定(而且这个过程是单调递增的,非严格)。所以可以想到dp的第二维表示:从最高位到第i+1位的部分F(x)值。所...原创 2019-07-03 23:01:20 · 160 阅读 · 0 评论 -
POJ 3252 Round Numbers
传送门数位dp。定义一种数,其二进制表示中0的个数大于等于1的个数。给你[Start,Finish],问其中多少个这种数。说几点。首先可以想到,这个题没办法中途continue了,只能到最后(pos==-1)才能判断。状态可以有两种设计方法,一种是两维,分别表示前面数位中0和1的个数;另一种是一维,表示前面数位中0多于1的个数(必须确定谁比谁多,请不要混淆为绝对值)。可以看出,后者...原创 2019-07-04 00:47:18 · 133 阅读 · 0 评论 -
HDU 5179 beautiful number
传送门数位dp。(要考虑前导0,类似还有POJ 3252)定义一种数,要求在其十进制数位上,较高位都>=较低位,且较高位%较低位都是0(较高位都能被较低位整除)。问你[L,R]内有多少个这种数。需要注意几点。dp第二维记录第i+1位数字,整除关系可以传递。中途判断。默认之前位都已满足要求,所以只要当前位能整除第i+1位,就可整除前面任意一位。满足要求的数中,只有一个数可以含有0...原创 2019-07-04 18:33:34 · 174 阅读 · 0 评论