二進位制狀態壓縮

2021-09-25 22:02:26 字數 480 閱讀 2253

二進位制狀態壓縮,即將乙個長度為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表示有改顏色。用線段樹儲存下當前的每一...