習題:
milo正聚精會神的組建自己的聖誕集市,他將把這個集市組建成整個歐洲最好的聖誕集市。晚上結束,到關燈的時間了,但有些人相當無禮,並沒有關掉桌上的燈。由於電費越來越貴,milo希望所有的燈都能很快的關掉,為此,他使用了傳奇電子平板電腦(leet)來達到這個目的,但他同時也需要你的幫助。
milo的聖誕集市有n行,每行有n個攤位。在leet上,milo有兩個按鈕:
·按下第乙個按鈕,milo想象出第x行,然後開啟已關閉的第x行的每個燈,同時關閉第x行的每個已經開啟的燈。
·按下第二個按鈕,milo想象出第x列,然後開啟已關閉的第x列的每個燈,同時關閉第x列的每個已經開啟的燈。
通過按壓自己的肚臍(第三個按鈕),milo將決定走到乙個特定的攤位,並親自開啟(或關閉)這個攤位的燈。現在的問題是,他的腿受傷了,為了避免肺栓塞,醫生規定他「第三個按鈕」最多只能使用k次(k≤n),幸運的是,第乙個按鈕和第二個按鈕可以無限次使用。
請問,milo有沒有可能關掉所有攤位上的燈。
輸入格式
第一行輸入兩個數n和k,表示攤位的行數和milo能夠使用第三個按鈕的個數。(1≤n≤1000,0≤k≤n)
接下來的n行,每行n個字母,這些字母由『x』和『o』組成,其中,『x』表示這個攤位的燈已經關閉,『o』表示這個攤位的燈還開著。
輸出格式
如果所有的燈能夠全部關閉,輸出「da」。否則,輸出「ne」。
樣例樣例輸入1
2 0
oxox
樣例輸出1
da
樣例輸入2
3 1
oooxoo
oox
樣例輸出2
ne
樣例輸入3
4 2
oxxo
xxox
oxoo
oxxo
樣例輸出3
da
思路:
首先有一點我們是可以明確的,第乙個操作針對一行只會使用一次,第二個操作針對一列只會使用一次,第三個操作針對每乙個格仔只會使用一次。明白這點之後,我們再次考慮兩行的狀態,將這兩行轉換成二進位制,再進行異或,如果異或後這一位為0,則證明這兩個燈狀態是一樣的,說明我們不需要對這兩個燈進行第三個操作,反之,則需要進行,同時這個操作是必須進行的。
**:
#includeusing namespace std;
int n;
int k;
int tot;
char c[1005][1005];
bool f=0;
bitset<1005> a[1005];
int main()
} if(k==n)
}if(!flag)
a[1].flip(i);}}
for(int i=1;i<=n;i++)
if(s<=k)
}if(f)
cout<<"da";
else
cout<<"ne";
return 0;
}
Sajam(01翻轉 bitset優化)
原題 題意 n n的01矩陣,你可以無限次翻轉一行或者一列,可以最多翻轉k k n 次乙個點。問是否可以全部翻轉成0。解析 k n說明至少有一行不會被翻轉單個點,或者k n時每行翻轉乙個點。那麼列舉每一行為那一行,將其他行與之對比 可以翻轉後再對比 不同的數量就是需要翻轉單個點的數量。因為有列翻轉,...
《人工智慧》之《確定性推理》習題解析
教材 人工智慧及其應用 蔡自興等,2016m清華大學出版社 第5版 參考書 對應同系列部落格 人工智慧 之 確定性推理 圖搜尋過程如下 建立乙個只含有起始節點s的搜尋圖g,把s放到乙個叫做open的未拓展節點表中。建立乙個叫做closed的已拓展節點表,初始化為空表。loop 若open表是空表,則...
轉導推理 歸納推理 轉導學習
轉導推理 歸納推理 def 傳統推理方法 歸納推理 直到今天,傳統的推理方法仍然是歸納 演繹法,人們首先用已有資訊定義乙個一般規則,然後用這個規則來推斷所需要的答案 首先從特殊到一般,然後從一般特殊。def 轉導推理 transductive inference 轉導推理的目的是估計某一位置 函式在...