這是第二道模版題,然後的話這道模版題其實和上一題
這道題其實二進位制的思想會體現的更加明顯,因為的話我們一旦把我們需要的數轉化成二進位制之後,然後乙個乙個去判斷,因為這種做法真的真的太神奇了,所以我覺得我講不太通,就直接放**吧
所以直接看**吧
1 #include2 #include3 #include4 #include5 #include6 #include7using
namespace
std;
8int f[16][1
<<15];/*
狀態壓縮,二進位制*/9
int a[16][16],v[1
<<15],vn,bin[16
],n;
10/*
bin記錄2的多少次方
*/11
intmain()
1242 v[++vn]=x;/*
這是一種合法情況,所以我們就加進去,下面可以for一遍
*/43}44
}45for(int i=2;i<=n;i++)/*
第一行已經處理完了,所以從第二行開始
*/4667}
68}69int ans=0;70
for(int i=1;i<=vn;i++) ans=max(ans,f[n][v[i]]);
71 printf("
%d\n
",ans);
72return0;
73 }
狀態壓縮模版3 地雷
首先這個應該可以說是我短時間內的這個部落格,也就是說很長的一段時間應該都不會再去寫部落格了,當然有喜歡的東西我還是要記錄下來,所以不多說,看一下這道題 時間限制 1 sec 記憶體限制 4 mb 提交 188 解決 111 提交 狀態 討論版 命題人 admin 題目描述 題意相信大家都玩過掃雷的遊...
BZOJ 2734 集合選數(狀態壓縮DP)
題意 給出乙個由1到n的數字組成的集合。定義合法子集為若x在子集中則2x 3x均不能在子集中。求有多少個合法的子集。思路 1 3 9 2 6 18 4 12 36 對於上面的矩陣,我們發現就等價於不選相鄰數字的方案數。因此列舉每個還沒有用到的數字,建立以該數字為左上角的矩陣。接著就是狀態壓縮dp。i...
狀態壓縮 方格取數
標籤 acm 題目 給你乙個n n的格仔的棋盤,每個格仔裡面有乙個非負數。從中取出若干個數,使得任意的兩個數所在的格仔沒有公共邊,就是說所取的數所在的2個格仔不能相鄰,並且取出的數的和最大。input 包括多個測試例項,每個測試例項包括乙個整數n 和n n個非負數 n 20 output 對於每個測...