javascript
[JSOI2010] 满汉全席
題目描述
滿漢全席是中國最豐盛的宴客菜肴,有許多種不同的材料透過滿族或是漢族的料理方式,呈現(xiàn)在數(shù)量繁多的菜色之中。由于菜色眾多而繁雜,只有極少數(shù)博學(xué)多聞技藝高超的廚師能夠做出滿漢全席,而能夠烹飪出經(jīng)過專家認(rèn)證的滿漢全席,也是中國廚師最大的榮譽(yù)之一。世界滿漢全席協(xié)會(huì)是由能夠料理滿漢全席的專家廚師們所組成,而他們之間還細(xì)分為許多不同等級(jí)的廚師。
為了招收新進(jìn)的廚師進(jìn)入世界滿漢全席協(xié)會(huì),將于近日舉辦滿漢全席大賽,協(xié)會(huì)派遣許多會(huì)員當(dāng)作評(píng)審員,為的就是要在參賽的廚師之中,找到滿漢料理界的明日之星。
大會(huì)的規(guī)則如下:每位參賽的選手可以得到n 種材料,選手可以自由選擇用滿式或是漢式料理將材料當(dāng)成菜肴。
大會(huì)的評(píng)審制度是:共有m 位評(píng)審員分別把關(guān)。每一位評(píng)審員對(duì)于滿漢全席有各自獨(dú)特的見解,但基本見解是,要有兩樣菜色作為滿漢全席的標(biāo)志。如某評(píng)審認(rèn)為,如果沒有漢式東坡肉跟滿式的涮羊肉鍋,就不能算是滿漢全席。但避免過于有主見的審核,大會(huì)規(guī)定一個(gè)評(píng)審員除非是在認(rèn)為必備的兩樣菜色都沒有做出來的狀況下,才能淘汰一位選手,否則不能淘汰一位參賽者。
換句話說,只要參賽者能在這兩種材料的做法中,其中一個(gè)符合評(píng)審的喜好即可通過該評(píng)審的審查。如材料有豬肉,羊肉和牛肉時(shí),有四位評(píng)審員的喜好如下表:
評(píng)審一 評(píng)審二 評(píng)審三 評(píng)審四 滿式牛肉 滿式豬肉 漢式牛肉 漢式牛肉 漢式豬肉 滿式羊肉 漢式豬肉 滿式羊肉如參賽者甲做出滿式豬肉,滿式羊肉和滿式牛肉料理,他將無法滿足評(píng)審三的要求,無法通過評(píng)審。而參賽者乙做出漢式豬肉,滿式羊肉和滿式牛肉料理,就可以滿足所有評(píng)審的要求。
但大會(huì)后來發(fā)現(xiàn),在這樣的制度下如果材料選擇跟派出的評(píng)審員沒有特別安排好的話,所有的參賽者最多只能通過部分評(píng)審員的審查而不是全部,所以可能會(huì)發(fā)生沒有人通過考核的情形。
如有四個(gè)評(píng)審員喜好如下表時(shí),則不論參賽者采取什么樣的做法,都不可能通過所有評(píng)審的考核:
評(píng)審一 評(píng)審二 評(píng)審三 評(píng)審四 滿式羊肉 滿式豬肉 漢式羊肉 漢式羊肉 漢式豬肉 滿式羊肉 漢式豬肉 滿式豬肉所以大會(huì)希望有人能寫一個(gè)程序來判斷,所選出的m 位評(píng)審,會(huì)不會(huì)發(fā)生 沒有人能通過考核的窘境,以便協(xié)會(huì)組織合適的評(píng)審團(tuán)。
輸入輸出格式
輸入格式:
第一行包含一個(gè)數(shù)字 K,代表測(cè)試文件包含了K 組資料。
每一組測(cè)試資料的第一行包含兩個(gè)數(shù)字n 跟m(n≤100,m≤1000),代表有n 種材料,m 位評(píng)審員。
為方便起見,材料舍棄中文名稱而給予編號(hào),編號(hào)分別從1 到n。
接下來的m 行,每行都代表對(duì)應(yīng)的評(píng)審員所擁有的兩個(gè)喜好,每個(gè)喜好由一個(gè)英文字母跟一個(gè)數(shù)字代表,如m1 代表這個(gè)評(píng)審喜歡第1 個(gè)材料透過滿式料理做出來的菜,而h2 代表這個(gè)評(píng)審員喜歡第2 個(gè)材料透過漢式料理做出來的菜。
每個(gè)測(cè)試文件不會(huì)有超過50 組測(cè)試資料
輸出格式:
每筆測(cè)試資料輸出一行,如果不會(huì)發(fā)生沒有人能通過考核的窘境,輸出GOOD;否則輸出BAD(大寫字母)。
輸入輸出樣例
輸入樣例#1: 復(fù)制
1
2 4
h1 m2
m2 m1
h1 h2
m1 h2
輸出樣例#1: 復(fù)制
BAD
Solution
題目太長(zhǎng)了,一句話題意,有一些原材料,每個(gè)材料可以選擇做兩個(gè)菜中的一個(gè),你要選擇這些材料做菜,使得滿足所有的評(píng)委要求的菜品,每個(gè)評(píng)委有兩道菜,至少滿足一個(gè)就夠了。
2-SAT?怎么建圖?
我們把一到材料分成兩個(gè)點(diǎn),\(i\)和\(i+n\),看樣例,假設(shè)我們選了m1,我們就不能選h1了,因?yàn)橐坏讲牧现荒茏鲆坏啦?#xff0c;那么意味著我們必須要選m2,因?yàn)橐獫M足第一個(gè)評(píng)委,所以m1向m2連邊,代表選了m1必須選m2,同理,我們選了h2,必須選h1,這還是對(duì)于第一個(gè)評(píng)委的要求。
就這樣建圖,最后跑一遍tarjan縮點(diǎn),我們只需判斷\(i\)和\(i+n\)是否在同一個(gè)強(qiáng)連通分量就行了,如果在同一個(gè)強(qiáng)連通分量,說明有沖突,根據(jù)邊的含義,這意味著同一個(gè)材料要同時(shí)做兩道菜,所以不合法。
代碼如下:
博主蒟蒻,可以隨意轉(zhuǎn)載,但必須附上原文鏈接k-z-j。
轉(zhuǎn)載于:https://www.cnblogs.com/kzj-pwq/p/9507567.html
總結(jié)
以上是生活随笔為你收集整理的[JSOI2010] 满汉全席的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Elasticsearch之配置详解
- 下一篇: Spark Streaming