題目鏈接: 題意:給一個長度為n和m,k的數組,的最大值。 題解:考慮dp的做法,dp[i][j]代表以第i個數為右端點,長度減一求余m的值為j時的最大值。 轉移方程:dp[i][j]=dp[i-1][j-1]+a[i](j>0) dp[i][j]=max(dp ...
題目鏈接:傳送門 思路: 由於只能翻轉一次子串,就相當於找出兩個不連續的子串,把在后面的一個子串翻轉過來,和第一個子串拼接。 因為題目僅要求子串中的字符不重復,所以字符的先后順序無關,翻轉的操作就相當於: 選出兩個不連續的子串,且他們沒有相同的字符,兩個子串的長度之和就是答案的一種可能。 題目中反復強調,給出的字符串只有前 個字母 a, t ,考慮到 , ,顯然在瘋狂暗示:要用狀壓來做這題。 所以 ...
2019-10-03 16:44 2 340 推薦指數:
題目鏈接: 題意:給一個長度為n和m,k的數組,的最大值。 題解:考慮dp的做法,dp[i][j]代表以第i個數為右端點,長度減一求余m的值為j時的最大值。 轉移方程:dp[i][j]=dp[i-1][j-1]+a[i](j>0) dp[i][j]=max(dp ...
(先處理好基本的位運算的東西) 為了更好的理解狀壓dp,首先介紹位運算相關的知識。 1.’&’符號,x&y,會將兩個十進制數在二進制下進行與運算,然后返回其十進制下的值。例如3(11)&2(10)=2(10)。 2.’|’符號,x|y,會將兩個十進制數在二進制下進行 ...
狀壓dp的含義 在我們解決動態規划題目的時候,dp數組最重要的一維就是保存狀態信息,但是有些題目它的具有dp的特性,並且狀態較多,如果直接保存的可能需要三維甚至多維數組,這樣在題目允許的內存下勢必是開不下的,那么我們能不能想個辦法,把它壓縮成一維呢?對,二進制.一般的動規題目數據范圍都不會 ...
E. Yet Another Division Into Teams There are n students at your university. The programming skill of the i-th student is ai. As a coach, you want ...
題目鏈接:傳送門 思路: 題目中的m為20,而不是26,顯然在瘋狂暗示要用狀壓來做。 考慮狀壓字母集合。如果想要保存字母集合中的各字母的順序,那就和經典的n!的狀態的狀壓沒什么區別了,時間復雜度為O(m22m),是不可行的,所以本題肯定有更好的做法。 考慮不保存字母集合中各字母 ...
2018過農歷新年這幾天,學了一下狀態壓縮動態規划,現在先總結一下。 狀態壓縮其實是一種並沒有改變dp本質的優化方法,階段還是要照分,狀態還是老樣子,決策依舊要做,轉移方程還是得列,最優還是最優,無后還是無后,所以它比較好理解。 狀壓,顧名思義就是要將一些狀壓想辦法壓縮起來(可以壓 ...
一、關於狀壓 dp 為了規避不確定性,我們將需要枚舉的東西放入狀態。當不確定性太多的時候,我們就需要將它們壓進較少的維數內。 常見的狀態: 天生二進制(開關、選與不選、是否出現……) 爆搜出狀態,給它們編號 1. 狀態跟某一個信息集合內的每一條都有關。(如 dp 套 dp ...
說到狀壓dp,一般和二進制少不了關系(還常和博弈論結合起來考,這個坑我挖了還沒填qwq),二進制是個好東西啊,所以二進制的各種運算是前置知識,不了解的話走下面鏈接進百度百科 https://baike.baidu.com/item/%E9%80%BB%E8%BE%91%E8%BF%90%E7 ...