數字dp小結

2021-09-12 13:58:43 字數 1068 閱讀 5297

數字dp可不是對於數的每一位進行dp,而是指對於這個數的組成進行dp。對於數的每一位進行dp,只是數字dp的一類題目。

【題目描述】

現在有兩個要求:

這是乙個 n(n

≤106

)n(n \leq 10^6)

n(n≤10

6)位的數(不含前導零)

相鄰的兩位的差值大於等於 p(p

≤9

)p(p \leq 9)

p(p≤9)

問有多少個數滿足該要求。

【題解】

顯然,我們不能去列舉這個數,畢竟他的位數是高精度級別的,但是很顯然可以從每一位入手。

定義dp陣列f[i

][j]

f[i][j]

f[i][j

]表示這個數的第 i

ii 位為 j

jj、前 i

ii 位都滿足要求時有多少種方案。

於是得出很顯然的轉移方程:

f [i

][j]

+=f[

i−1]

[k](

abs(

k−j)

≥p

)f[i][j]+=f[i-1][k]~~(abs(k-j)\geq p)

f[i][j

]+=f

[i−1

][k]

(abs

(k−j

)≥p)

這就是數字dp的入門了。

數字dp其中的乙個難點,是如何統計答案。

接下來,看一下和這道題很像的一道題。

【scoi2009】windy數

【題目描述】

windy定義了一種windy數。不含前導零且相鄰兩個數字之差至少為2的正整數被稱為windy數。 windy想知道,在a和b之間,包括a和b,總共有多少個windy數?

題解 (原諒我水訪問量)

hnoi 2002 kathy 函式

題解sdoi 2010 **拍賣會 題解

如果還有什麼好題的話,以後一(da)定(gai)會擺上來的。

數字DP小結

download.csdn.net detail u012959992 8892265 一般是求小於等於數字n的某些特徵數字個數,或者是區間 l,r 的之間的某些特徵數字個數,後者一般可以轉換成求差的方式來做。數字處理函式int f int num return dfs pos,s true dig...

數字dp小結

在這裡寫個總結吧 對於數字dp,之前學的時候,學得很唬,現在又學了一發,還是感覺這個東西不是很好掌控.這個東西有他的思想,當然也有一定的套路和模板,我大概可以掌握模板,了解了一些套路,對他的思想也有了一些認識.雖然說思想是根本,但是掌握套路和模板也是必不可少的,不過只知道套路和模板對於一些比較活的題...

數字DP小結

數字dp是用來解決一段區間內,存在多少個數滿足某個數的性質的問題 題目中輸入的數可能會爆int,一般為0 a b 2 10 9 數字dp中處理的是每乙個數的位,而不是這個數的本身 也就是說1024,2024在後面三位在性質上是一樣的,所以dp會儲存這三位的狀態 這樣就節省了時間複雜度 一般來說,數字...