回想一下在小学和初中遇到的两类问题:
- 页码问题:给定一本书,页码编号 1 1 1~ 500 500 500,试求出这本书有多少页的页码上含有 1 1 1 这个数字?
- 初一数学题:定义“十全十美”数是指一个数能被 10 10 10 整除且数位之和相加是 10 10 10 的倍数,试求…
如此这般的问题,不得不说贯穿了从小学到初中,你是否想过把它们出成一道 OI 题?没错就是在讽刺把 MO 题搬到 OI 的屑行为有人这么想了,还这么干了,于是就出现了数位 DP。
先来看一下页码问题,小学的时候我们怎么解决这个问题?是不是分类讨论?
0 − 9 0-9 0−9
10 − 99 10-99 10−99
100 − 199 100-199 100−199
200 − 299 200-299 200−299
300 − 399 300-399 300−399
400 − 499 400-499 400−499
500 500 500
如此这般来搞,作为一个 OIer,我们要从不同的角度看待世界,仔细观察,上面有一些区间的答案是一样的,这启示我们 DP 解决问题,怎么搞呢?到了这一步,相信不难写出方程,所以先咕了明明就是不想写。
数位dp就是套模板 ——lwz
(转自洛谷日报)
数位 dp 有两种实现方式,第一种是递推,恶心自己,恶心出题人,碳基生物一般不会整这种事,所以一般来说都用记忆化搜索来实现,由于上文的名言,直接上模板:
(这里由于 vjudge 上不去,鸽子了)
未 van 待续,之后可能会加一些例题