JSOI2010 滿漢全席 2 SAT

2021-09-29 04:09:00 字數 2881 閱讀 7806

傳送門:題目鏈結

滿漢全席

題目描述

滿漢全席是中國最豐盛的宴客菜餚,有許多種不同的材料透過滿族或是漢族的料理方式,呈現在數量繁多的菜色之中。由於菜色眾多而繁雜,只有極少數博學多聞技藝高超的廚師能夠做出滿漢全席,而能夠烹飪出經過專家認證的滿漢全席,也是中國廚師最大的榮譽之一。世界滿漢全席協會是由能夠料理滿漢全席的專家廚師們所組成,而他們之間還細分為許多不同等級的廚師。

為了招收新進的廚師進入世界滿漢全席協會,將於近日舉辦滿漢全席大賽,協會派遣許多會員當作評審員,為的就是要在參賽的廚師之中,找到滿漢料理界的明日之星。

大會的規則如下:每位參賽的選手可以得到n 種材料,選手可以自由選擇用滿式或是漢式料理將材料當成菜餚。

大會的評審制度是:共有m 位評審員分別把關。每一位評審員對於滿漢全席有各自獨特的見解,但基本見解是,要有兩樣菜色作為滿漢全席的標誌。如某評審認為,如果沒有漢式東坡肉跟滿式的涮羊肉鍋,就不能算是滿漢全席。但避免過於有主見的審核,大會規定乙個評審員除非是在認為必備的兩樣菜色都沒有做出來的狀況下,才能淘汰一位選手,否則不能淘汰一位參賽者。

換句話說,只要參賽者能在這兩種材料的做法中,其中乙個符合評審的喜好即可通過該評審的審查。如材料有豬肉,羊肉和牛肉時,有四位評審員的喜好如下表:

評審一		 評審二 	評審三 		評審四 

滿式牛肉 滿式豬肉 漢式牛肉 漢式牛肉

漢式豬肉 滿式羊肉 漢式豬肉 滿式羊肉

如參賽者甲做出滿式豬肉,滿式羊肉和滿式牛肉料理,他將無法滿足評審三的要求,無法通過評審。而參賽者乙做出漢式豬肉,滿式羊肉和滿式牛肉料理,就可以滿足所有評審的要求。

但大會後來發現,在這樣的制度下如果材料選擇跟派出的評審員沒有特別安排好的話,所有的參賽者最多只能通過部分評審員的審查而不是全部,所以可能會發生沒有人通過考核的情形。

如有四個評審員喜好如下表時,則不論參賽者採取什麼樣的做法,都不可能通過所有評審的考核:

評審一 		評審二 		評審三 		評審四 

滿式羊肉 滿式豬肉 漢式羊肉 漢式羊肉

漢式豬肉 滿式羊肉 漢式豬肉 滿式豬肉

所以大會希望有人能寫乙個程式來判斷,所選出的m 位評審,會不會發生 沒有人能通過考核的窘境,以便協會組織合適的評審團。

輸入描述:

第一行包含乙個數字 k,代表測試檔案包含了k 組資料。

每一組測試資料的第一行包含兩個數字n 跟m(n≤100,m≤1000),代表有n 種材料,m 位評審員。

為方便起見,材料捨棄中文名稱而給予編號,編號分別從1 到n。

接下來的m 行,每行都代表對應的評審員所擁有的兩個喜好,每個喜好由乙個英文本母跟乙個數字代表,如m1 代表這個評審喜歡第1 個材料透過滿式料理做出來的菜,而h2 代表這個評審員喜歡第2 個材料透過漢式料理做出來的菜。

每個測試檔案不會有超過50 組測試資料

輸出描述:

每筆測試資料輸出一行,如果不會發生沒有人能通過考核的窘境,輸出good;否則輸出bad(大寫字母)。

示例1

輸入

2

3 4m3 h1

m1 m2

h1 h3

h3 m2

2 4h1 m2

m2 m1

h1 h2

m1 h2

輸出

good

bad

解題思路:

典型的 2-sat 題,每種食物由 「滿」 和 「漢」 兩種做法,要通過乙個評審的要求是至少滿足他的乙個條件,那麼關係就是:如果其中乙個條件沒有滿足那麼另外乙個條件必須滿足。

而條件沒有滿足其實就是沒有做成他要求的做法,如:要求做 m3 ,那麼沒有滿足就是做成 h3 。

ac**:

#include

#include

#include

#include

#include

#include

#define ll long long

#define inf 0x3f3f3f3f

using

namespace std;

const

int n=

1e3+10;

int k,n,m;

char s1[

110]

,s2[

110]

;bool mark[

2*n]

;int stack[

2*n]

;int top;

vector<

int> g[

2*n]

;void

init()

void

addedge

(int x,

int y)

bool

dfs(

int x)

return

true;}

bool

twosat()

if(!dfs

(i+1))

return

false;}

}}return

true;}

intmain()

if(twosat()

)printf

("good\n");

else

printf

("bad\n");

}return0;

}

JSOI2010 滿漢全席

time limit 10 sec memory limit 64 mb submit status discuss 滿漢全席是中國最豐盛的宴客菜餚,有許多種 同的材 透過滿族或是漢族的 方式,呈現在 繁多的菜色之中。由於菜色眾多而繁雜,只有極少 博學多聞技藝高超的廚師能夠做出滿漢全席,而能夠烹飪出...

JSOI2010 滿漢全席

洛谷 p4171 傳送門 bzoj1823 傳送門 2 sat裸題。簡單講一下2 sat 首先把題目給出的種種限制轉換為乙個圖。以這道題來說,每種菜看作是兩個點,乙個點代表做成漢式,另乙個代表做成滿式。然後考慮約束條件 比如 評委要求a做成漢式,b做成滿式。那麼如果a做成滿式,b就一定是滿式 同理,...

JSOI2010 滿漢全席 2 sat

做的第一道2 sat的題emmm。由題意可知,每個評委的兩個要求中,至少要滿足乙個,因此,如果有乙個不滿足,那另乙個必定要滿足 所以對於每道菜我們拆兩個點,乙個是滿族口味,乙個是漢族口味,如果我們要不滿足滿族口味,也就意味著我們要做漢族口味 所以照著每位評委的菜連邊即可 比如說乙個評委要求m1,m2...