dp基礎小結

2021-07-02 12:56:07 字數 724 閱讀 3059

kuangbin帶你飛系列,基礎dp

總共20多道題,就不一一說了

說一下學會的關鍵的思路

第1點:有的時候某一狀態的值的得出,可能會要我們列舉已經計算過的值,一一比較取最值,但如果真的去列舉的話就會超時,這時我們可以把狀態的含義設為前i項的最值,計算的時候只需要多比較一項,即和前一項比較一下就可以了。典型題目:a題和s題

第2點:有的時候我們後面的選擇可能會依賴於前面的選擇是什麼,這樣就需要把前面的選擇記為乙個狀態,算的時候要列舉一下,多乘以乙個n的複雜度,典型題目:c題

第3點:有的時候可能會發現怎麼記錄狀態都沒有辦法找到轉移方程,這時候可以考慮一下把結果作為乙個狀態,當然,這時候複雜度就與取值範圍有關了,如果取值範圍太大的話,還有乙個辦法,對於某一些題,我們可以把值進行離散化一下,就樣就轉成了n的複雜度了。典型題目:k題

第4點:有的題目可能給出乙個n,但物體數量可能不止n,有可能是n*2,n*3,需要這n個物體進行處理一下,把假設出來的物體也算進去。典型題目:c題和m題

第5點:有的題做的時候可能要先按某種規則排序一下。典型題目:j題和s題

第6點:區間dp,區間dp可以正向進行也可以反向進行,正向和反向的乙個區別就是,正向是計算i-j這一段時,兩旁的還沒處理,而反向則是取i-j這一段時,兩旁的已經處理了。還有乙個要注意的地方就是,將區間分成i-k和k-j這兩段時,可能這兩段取的順序也會影響結果,多嘗試一下不同的取法。典型題目:o題。順便延伸一道題目,2023年北京區域賽的dire wolf。

樹形dp小結

這些天做了一些樹形dp的題目,感覺有了些領悟,尤其是理解到樹形揹包就是分組揹包之後。選出幾道不錯的總結一下 hdu 1520 hdu 4003 poj 1155 poj 2486 hdu 4313 hdu 4340 hdu 1520 入門水題 每個節點有權值,子節點和父節點不能同時選,問最後能選的最...

區間dp小結

區間dp,顧名思義,就是在區間上dp,即把整個區間劃分為乙個個的小區間,在小區間內dp求出最優值,然後把這些小區間合併以後就是整個取件的最優值。下面是一些比較經典的區間dp題目 1.nyoj 737 石子合併 題意 有n堆石子,每堆有a i 個,每次合併時只能合併相鄰的兩堆,代價為兩堆石子的個數之和...

數字DP小結

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