狀壓DP 藍橋杯 2019 C A T9

2022-08-19 05:51:13 字數 1033 閱讀 5482

狀態壓縮dp

【問題描述】

糖果店的老闆一共有 m 種口味的糖果**。為了方便描述,我們將 m 種 口味編號 1 ∼ m。

小明希望能品嚐到所有口味的糖果。遺憾的是老闆並不單獨**糖果,而 是 k 顆一包整包**。

幸好糖果包裝上註明了其中 k 顆糖果的口味,所以小明可以在買之前就知 道每包內的糖果口味。

給定 n 包糖果,請你計算小明最少買幾包,就可以品嚐到所有口味的糖 果。

【輸入格式】

第一行包含三個整數 n、m 和 k。

接下來 n 行每行 k 這整數 t1, t2, · · · , tk ,代表一包糖果的口味。

【輸出格式】

乙個整數表示答案。如果小明無法品嚐所有口味,輸出 −1。

【樣例輸入】

6 5 3

1 1 2

1 2 3

1 1 3

2 3 5

5 4 2

5 1 2

【樣例輸出】

【評測用例規模與約定】

對於 30% 的評測用例,1 ≤ n ≤ 20 。

對於所有評測樣例,1 ≤ n ≤ 100,1 ≤ m ≤ 20,1 ≤ k ≤ 20,1 ≤ ti ≤ m。

將每包的糖果口味這樣轉換

1 1 2->0 0 0 1 1

1 2 3->0 0 1 1 1

1 1 3->0 0 1 0 1

2 3 5->1 0 1 1 0

5 4 2->1 1 0 1 0

5 1 2->1 0 0 1 1

**就是:ss|=(1<<(s-1));

//n 總共有n包糖可以選擇

//m 總共有m種口味

//k 每包糖有k顆

#include#include#includeusing namespace std;

int main()

goods[i]=ss;

dp[ss]=1;

}for(int i=0;i}

cout<}

藍橋杯 方塊填數 數獨 dfs 狀壓 c

數獨 是當下炙手可熱的智力遊戲。一般認為它的起源是 拉丁方塊 是大數學家尤拉於1783年發明的。如圖 1.jpg 所示 6x6的小格被分為6個部分 圖中用不同的顏色區分 每個部分含有6個小格 以下也稱為分組 開始的時候,某些小格中已經填寫了字母 abcdef之一 需要在所有剩下的小格中補填字母。全部...

codeforces 482c 狀壓 概率DP

題意 給出n個不同的串,長度一樣,別人隨機選乙個串,你要詢問他那個串某乙個位置是什麼字元直到能確定那個串才能停止,問詢問次數的期望。題解 50個串20個位置容易想到狀壓,把字串長度狀壓先考慮能否在某乙個狀態確定哪些字串能確定哪些不能確定,需要2 m m次,然後時間上不能再乘以n不然會爆,想想只要我知...

2019藍橋杯(c )選擇題 2

問題描述 小明用字母 a 對應數字 1,b 對應 2,以此類推,用 z 對應 26。對於 27以上的數字,小明用兩位或更長位的字串來對應,例如 aa 對應 27,ab 對應 28,az 對應 52,lq 對應 329。請問 2019 對應的字串是什麼?思考過程 woc,剛開始把a 1,b 2,z 2...