數字dp總結

2021-08-20 08:05:37 字數 597 閱讀 8622

到這裡,數字dp就告一段落了,kuangbin的專題還差一道,那一道涉及到了ac自動機,目前還不可做。

簡單寫下數字dp的總結

數字dp有它固定的模板,例如solve,dfs函式的大體寫法,和limit的處理。

唯一不同的地方就是字首狀態state的維護,最為詳細的state記法就是把前面所選擇的每乙個數都記錄下來(即字首prev),那麼這就成了純粹的暴力。

所以,根據題目的要求,選擇合適的state代替prev是解決問題的關鍵。

例如要求連續遞增時,只需要記錄最近一次選擇的數就可以,即prev(1234)可以用state(4)代替。

例如要求不能出現」666」時,需要記錄最近兩次的選擇就可以,即prev(894421323)可以用state(23)代替。

前導0的處理(也是模板)

想辦法使dp陣列的memset只進行一次(例如f(x)那道題轉加法為減法)

題目不再詢問符合要求數的個數,而是改為詢問總和或者平方和。(也是模板)

題目存在某種特殊技巧,例如….例不出來,因為我數字dp只刷了12道題。

但是,最重要的還是prev->state的轉化過程。

to be continue….

數字DP 總結

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

數字DP總結

數字dp基於動態的思想,記錄狀態以至於不用重複的計算,能夠處理大規模的數 其時間複雜度為o 狀態數 轉移數 狀態數是dp陣列的大小,轉移數是for迴圈大小 這個時間我也不是很想得通,某大佬講的。比較簡單的幾種題型 1 求l r數字中包含某些數字特徵的數量和 如數字子串中是否有13等 hdu 2089...

數字dp總結

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