數字DP 總結

2021-07-17 02:32:28 字數 516 閱讀 1037

數字dp適合在一段數的區間內找出滿足某些條件的數的個數,這個時候往往不能之間遍歷,肯定會超時,則一般使用數字dp來解決。

數字dp的常見形式是dp[i][j],表示開頭是j的i位數滿足條件的有多少個,當然也有其他dp[i][j][k]等等,但i,j,k都很小,不會像直接遍歷那麼耗時。

以前做過乙個不要62的題(hdu2089),當時沒用數字,直接列舉也過了。

還有乙個比較簡單的是hdu3555,就是統計乙個區間內帶49的數的個數。

像這種基礎的數字dp,基本上都是找出第i位與i-1位的關係,這兩個題中的關係很明顯。算是數字dp的入門題。

然後比較難一些的數字題,一般都要同餘定理。比如說hdu3652。大致題意就是,在乙個區間內找出有多少含有13並且能被13整除的數的個數。前面那種題,一般前一位都和後一位有明顯的關係,比如說第i位為 6 那麼第i-1位就不能是2。

但是這個題要找出,能被13整除的,能不能被13整除是乙個整體的性質,在我們不知道確切數的時候想要得到餘數,就要用到上乙個狀態的餘數。再配合dfs得到結果。

數字DP總結

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

數字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...