二進位制狀態壓縮,即將乙個長度為m的bool陣列用乙個m位的二進位制數來表示和儲存
操作運算
取出整數n在二進位制表示下的第k位
(n>>k)&1
取出整數n在二進位制表示下的第0~k-1位(後 k 位)
n&((1《取出整數n在二進位制表示下的第k位取反
n xor (1《取出整數n在二進位制表示下的第k位賦值為1
n取出整數n在二進位制表示下的第k位賦值為0
n&(~(1<
//哈密頓圖。。。
//狀態壓縮求最短路徑
int f[1 << 20][20];
int hamiton(int n, int weight[20][20])
狀態壓縮可以節省程式執行的時間和空間。當bool陣列不大時可以用乙個整型型別儲存,當m較大的時候使用若干個整型型別。也可以用c++stl裡面的bitset(這個暫時還沒學,之後補充)實現 Sleep Buddies (二進位制狀態壓縮)
演算法 狀態壓縮,把每乙個集合都壓縮成乙個數字。使用方法 把每個狀態都進行1 ac code 1 include 2 using namespace std 3 typedef long long ll 4 const int maxn 1e5 10 5 define rep i,first,las...
總結 二進位制狀態壓縮
目錄 二 二進位制狀態壓縮的操作 三 具體應用 1.定義 二進位制狀態壓縮,是指將乙個長度為 m 的 bool 型別陣列用乙個二進位制下有 m 位的整數表示並儲存的方法。2.應用範圍 二進位制狀態壓縮是狀態壓縮動態規劃,寬度優先搜尋狀態壓縮優化的重要基礎。我們在構建程式時一定要注意 在 m 位二進位...
線段樹(狀態壓縮二進位制)
題意 給出n 1e5 的長度的木棒,初始的顏色都為1,給出顏色種類t 1 t 30 給出q 1e5 個操作,c l r x 將l到r內的所有顏色更改為x p l r 問在l到r內有多少種顏色。解法 觀察發現顏色種類不多,將顏色轉為二進位制,每一位代表一種顏色,1表示有改顏色。用線段樹儲存下當前的每一...