noip模擬 食物中毒《暴搜 狀壓優化》

2022-05-07 10:42:06 字數 2027 閱讀 8913

問題描述

bqc經過一段時間的研究發現,要解這種毒需要一種特殊的藥物。不幸的是,這種藥物在 市面上不存在,沒有辦法bqc只好親自制得這種藥物。它含有m種化學物質a1,a2,…,am。現 在bqc的手上有n種藥材(每種藥材只有一種),每種藥材含有若干種化學物質(bqc他有一種 機器,只要將藥材放入機器,就能制得相應的藥物)。

bqc需要你的幫助,他希望你能幫他選取若干種藥材,用這些選取的藥材製作出bqc需要 的藥物。由於這些化學物質是有毒的,因此你選出來的藥物,必須含有這m種化學物質。 有一點需要注意:根據中醫以毒攻毒的理論,兩個相同的化學物質在一起,它們的藥性會 同時消失變為一種無毒物質(大多情況下這種無毒物質會揮發掉,也就是說這種化學物質消 失了)。比如說藥材1有化學物質1、2,藥材2有化學物質1、3,那麼如果藥材1和藥材2混合, 你得到的藥物會含有化學物質2、3。 bqc問你,需要選用那些藥材可以制得他想要的藥物?

輸入格式

本題每個測試點存在多組資料,每組輸入資料第1行包含兩個整數n和m,表示bqc擁有的 藥材數目和他所需藥物所含的化學物質的種類數目;

第2行共有m個整數,分別表示m中化學物質的編號,用1~50之間的數字編號(輸入資料保 證同一種化學物質不會被描述多次);

第3行到第n+2行,每行包含若干個數。第i+2行的第乙個數為mi,表示藥材i包含mi中化 學物質,接下來mi個數,描述藥材i含有的化學物質的編號,用1~50之間的數字編號(同一種 化學物質可能會被描述多次)。  每組輸入資料用乙個空行隔開。

輸出格式

對於每組資料輸出一行,如果用這些藥材可以制得bqc需要的藥物,那麼輸出「possible」; 否則輸出「impossible」,不包含引號。

樣例輸入

2 22 3

2 1 5

2 1 3

3 31 3 4

4 2 3 4 1

1 42 2 1

4 41 2 3 4

3 1 3 4

3 1 4 5

1 22 2 3

樣例輸出

impossible

possible

possible

其實吧,這道題我把它畫成圖,我還以為可以用二分圖匹配做,後來發現tan90°,然後就只有用狀壓了,畢竟這個選到指定種類的題很容易想到用二進位制表示狀態

然後就是乙個暴力搜尋了,原本是打著死馬當活馬醫的態度做這題,結果竟然還一次就a了

【思路】

陣列f[i]表示第i個數含有哪些物質(二進位制表示),然後暴力搜尋;

有個叫大公尺兔的大佬還提出了更強的解法,就是用線性基,優化了很多啊

1 #include2 #include3 #include4 #include5 #include6 #include7

#define maxn 55

8#define ll long long

9using

namespace

std;

1011

ll f[maxn];

12ll goal,n,m;

13int vis[maxn],y[maxn],tr=0;14

15int

read()

18while(ch>='

0'&&ch<='9')

19return xx*ff;20}

2122

void dfs(int

pos,ll now)

25if(pos==n+1)return;26

if(!vis[pos])

29if(tr==1)return

;30 dfs(pos+1

,now);31}

3233

intmain()

44for(int i=1;i<=n;i++)

50 }dfs(1,0

);51

if(!tr)printf("

impossible\n");

52}53 }

view code

我dfs打的醜不要笑,主要是習慣了以dep為引數的dfs,這次以pos的還有點不熟悉qaq

NOIP模擬 修路

這題第一眼看上去有些懵逼,還以為是dp。第二眼,哦,這麼裸的最小生成樹,2分鐘打完,拍都沒對,自信100分。最終100分。每條邊的權值減去連個節點的權值,所有的邊做一次最小生成樹就好了。include include include include include define fo i,a,b f...

NOIP模擬 項鍊

經過一番周折,bob找到了alice,為了安慰alice驚魂未定的心,bob決定給alice買一條手鍊,這條手鍊由m個珍珠組成,每個珍珠上刻著不同的小寫字母。當alice看到一些字母按照一定的順序排列成的字串時,就會產生一定的愉悅值。bob現在可以在這m個珍珠上刻上字母,現在他想知道,如何刻字母可以...

NOIP模擬 幻象

phantom是一位愛思考的哲 學家。最近phantom得到了森 妖精的真傳。在他練功的時候,每秒他的思緒中都有一定的概率浮現出奇 異的幻象,持續x秒的幻象將產生 空格 的幻象值。phantom練功發自真心,他想知道,在n秒內他期望產生的幻象值是多少。等我比賽完之後,我們才知道 空格 是x2 所以比...