?
大致题意:若一个整数的各位数字之和是10的倍数,称这个数为good number。给出区间[A,B],求出该区间内good number的数的个数。
?
第一道数位dp,折腾了半天才明白怎么回事。
设dp[site][mod]表示到第site位(由高位向低位)前面各位数字之和对10取余为mod的数的个数,进行记忆化搜索。有两个很重要的点,首先是变量up,表示是否到达边界,up为0表示没到达,up为1表示到达边界,up的取值决定后面位数上的数的取值范围,是0-9还是0-dig[site]。然后是记忆化的条件,dp[site][mod]记录的是没到达边界的情况,相当于共用的结果,这也应该的记忆化的本质,而对于到达边界的,就没必要记忆化了。
?
?
#include
#include
#include
?