數字DP總結

2021-07-29 22:55:26 字數 804 閱讀 3200

數字dp基於動態的思想,記錄狀態以至於不用重複的計算,能夠處理大規模的數

其時間複雜度為o(狀態數*轉移數) //狀態數是dp陣列的大小,轉移數是for迴圈大小(這個時間我也不是很想得通,某大佬講的。。)

比較簡單的幾種題型:

1): 求l~r數字中包含某些數字特徵的數量和(如數字子串中是否有13等)hdu 2089 不要62

2):求l~r數字中各個位數相加能夠整除某個數的數量和(如123各位置的數相加為6,判斷是否能整除2)

3):求l~r數字中能形成回文串的數量和   lightoj 1205

4):求l~r數字中能被某數整除的數量和   hdu 3652 b-number

不那麼簡單的幾種題型(大佬無視我):

1):在形成回文串的基礎上還要求是先非遞增再非遞減(等凹性質)  2017廣東工業大學程式設計競賽決賽-g題-等凹數字

2):要求數字能夠整除每一位的數字   (此題需要離散,而且初始化不能為0。。)  codeforces 55d - beautiful numbers

有待更新。。

小細節;  

1:對於初始化陣列,首先不需要每組陣列都初始化,只需要在一開始初始化就可以了,但是如果只初始化一次呢,在把資料放進dp陣列裡的時候,應當先判斷是否為!p,

不然就有可能導致dp陣列存的並不是列舉0~9的所有可能的資料,而導致下一組數呼叫到了這個資料(實質是錯的)。

2:初始化資料,記得初始化為-1!!!

,不然就有可能導致算重而增加了時間複雜度了,因為dp陣列存的數也有可能是0,如果你初始化為0,即使存了0也會被認為沒算。

3:未完待續~

數字DP 總結

數字dp適合在一段數的區間內找出滿足某些條件的數的個數,這個時候往往不能之間遍歷,肯定會超時,則一般使用數字dp來解決。數字dp的常見形式是dp i j 表示開頭是j的i位數滿足條件的有多少個,當然也有其他dp i j k 等等,但i,j,k都很小,不會像直接遍歷那麼耗時。以前做過乙個不要62的題 ...

數字dp總結

到這裡,數字dp就告一段落了,kuangbin的專題還差一道,那一道涉及到了ac自動機,目前還不可做。簡單寫下數字dp的總結 數字dp有它固定的模板,例如solve,dfs函式的大體寫法,和limit的處理。唯一不同的地方就是字首狀態state的維護,最為詳細的state記法就是把前面所選擇的每乙個...

數字dp總結

由簡單到稍微難點。從網上搜了10到數字dp的題目,有幾道還是很難想到的,前幾道基本都是模板題,供入門用。點開即可看題解。hdu3555 bomb hdu3652 b number hdu2089 不要62 hdu4734 f x hdu4389 x mod f x ural1057 amount o...