越來越覺得位運算好神啊。。。
用位運算來儲存每個狀態
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;
#define ll long long
#define pi acos(-1)
#define n 1<<20+10
#define inf 999999999
#define eps 1e-8
//****************************************
//zoj2297 dp
//****************************************
int dp[(1<<20)+10];
int a[n],b[n];
int main()}}
if(dp[m-1]>=c)
printf("clear!!!\n");
else
printf("try again\n");
}return 0;
}
sgu225 裝壓DP 位運算
題意是 給出乙個 n n 的棋盤 問放置 k 的 騎士 相當於 象棋中的馬 有多少中放置方法。n等於10 是tle 於是 n 10 打表 用 dfs寫的 執行時間長,但 簡單。開陣列時 用到滾動陣列。由於攻擊範圍是 兩行 所以 是在三行之間做dp 每種狀態表示兩行 這樣上下三行之間的關係就兩種狀態直...
狀態壓縮DP之位運算總結
介紹 在進行dp題目分析時,針對狀態或子狀態可以抽象為 0 1 排列組合的題目時,將其 0 1 序列轉化為二進位制數,再而轉換為十進位制數,可以更加便捷的對其進行資料分析處理,減少因為混亂所造成的一些不必要的錯誤。魔鬼往往藏在細節之中。常用運算子 都是十進位制數在二進位制下所做的運算,返回十進位制的...
最短Hamilton路徑(狀壓dp與位運算)
給定一張 n n 20 個點的帶權無向圖,點從0 n 1標號,求起點 0 到終點 n 1 的最短hamilton路徑。hamilton路徑的定義是從 0 到 n 1 不重不漏地經過每個點恰好一次。第一行乙個整數n。接下來n行每行n個整數,其中第i行第j個整數表示點i到j的距離 乙個不超過10 7的正...