習題 sajam 推理

2021-09-26 10:34:02 字數 1586 閱讀 9173

習題:

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 轉導推理的目的是估計某一位置 函式在...