一種使用位運算的優化型dp(其實就是用於優化)
這裡記一下常用的普通表示式的位運算表示(位運算比普通表示式運算時間少一些):
普通表示式
二進位制表示
pow(2,n)
1n>>1
n*2n<<1
解決多階段決策最優化問題(因為是優化型dp,所以解決題型與線性dp差不多)
#include
const
int inf=
1<<15;
using
namespace std;
int dp[inf+10]
;int dp1[inf+10]
;int n,m;
void print1(int num)
}int
main()
int res=-1
;for
(int i=
0;i<(1
<;i++)}
}for
(int i=
0;i<(1
<;i++)}
return0;
}
思路及解題程式(摘自洛谷大佬)%%%
其實只是因為本蒟蒻學了之後還沒做出來,之後也許會有一天能夠把這道題做出來並傳送awa
希望大家不要diss我,靴靴qwq
更多狀態壓縮dp合集
狀態壓縮 DP 學習筆記
對於乙個全集 u 的任意乙個子集 a u 我們可以用乙個n位的二進位制數來表示這乙個集合。其中,末位第 i 位數為 0表示 ai 不存在於該子集中,為 1 表示 ai 存在於該子集中。例如 全集 u 子集 a 那麼我們可以用 10101 2 來表示子集 a 對於全集 u的任意兩個子集 a b的二進位...
學習筆記 狀態壓縮DP
我們知道,用dp解決乙個問題的時候很重要的一環就是狀態的表示,一般來說,乙個陣列即可儲存狀態。但是有這樣的一些題 目,它們具有dp問題的特性,但是狀態中所包含的資訊過多,如果要用陣列來儲存狀態的話需要四維以上的陣列。於是,我們就需要通過狀態壓縮來儲存狀態,而 使用狀態壓縮來儲存狀態的dp就叫做狀態壓...
狀態壓縮DP
首先,我們以一道狀壓經典題tsp來引入。tsp問題 一張圖上有n個點,給定相應的鄰接矩陣,需要求出從0號節點出發,經過且只經過每個頂點一次,最後仍回到0號節點的最小邊權。思路 假設現在已訪問過的頂點集合 起點0當作還未訪問過的頂點 為s,當前所在頂點為v,用dp s v 表示從v出發訪問剩餘的所有頂...