有這樣一種魔板:它是乙個長方形的面板,被劃分成n行m列的n*m個方格。每個方格內有乙個小燈泡,燈泡的狀態有兩種(亮或暗)。我們可以通過若干操作使魔板從乙個狀態改變為另乙個狀態。操作的方式有兩種:
(1)任選一行,改變該行中所有燈泡的狀態,即亮的變暗、暗的變亮;
(2)任選兩列,交換其位置。
當然並不是任意的兩種狀態都可以通過若干操作來實現互相轉化的。
你的任務就是根據給定兩個魔板狀態,判斷兩個狀態能否互相轉化。
檔案中包含多組資料。第一行乙個整數k,表示有k組資料。
每組資料的第一行兩個整數n和m。(0
以下的n行描述第乙個魔板。每行有m個數字(0或1),中間用空格分隔。若第x行的第y個數字為0,則表示魔板的第x行y列的燈泡為「亮」;否則為「暗」。
然後的n行描述第二個魔板。資料格式同上。
任意兩組資料間沒有空行。
共k行,依次描述每一組資料的結果。
若兩個魔板可以相互轉化,則輸出yes,否則輸出no。(注意:請使用大寫字母)
輸入 2
3 40 1 0 1
1 0 0 1
0 0 0 0
0 1 0 1
1 1 0 0
0 0 0 0
2 20 0
0 11 1
1 1輸出
yesno
分析一直以為是個結論題沒想到居然是個暴力列舉的。。。。。。
先來手玩一下就可以發現(並不,所以每行最多只有可能變換一次,不然就換回來了。
所以每一行就會有兩種情況,變和不變
然後yyq暴力2^n列舉
每行的變化情況加剪枝大力出奇蹟過了這個題
其實除了2^n列舉之外,還有一種列舉方法
對於每一列來說,列的變換不會改變量字
先假設能成功
那麼如果我們知道第1個矩陣中的某一列經過變換後成為第2個矩陣的某一列,
那我們就可以通過比較兩個列哪些數字不同,推出哪些行是變換了的
所以我們直接去列舉第1個矩陣中的第一列經過變換後成為第2個矩陣的第i列
然後推出哪些行是變換了,進而n^3判斷剩下的列是否可行。
如果全都不行則無解
複雜度是o(kn^4),開開o2應該可以過
我不信你100張牌能秒我???(霧
**
#include#includeint t,n,m,rev[105],vis[105],nw[105][105],nx[105][105
];bool check(int
x) }
if(!flag)return0;
}return1;
}int
main()
if(flag)puts("
yes");else puts("no"
); }
}
洛谷 P1275 魔板(暴力 思維)
題目描述 有這樣一種魔板 它是乙個長方形的面板,被劃分成n行m列的n m個方格。每個方格內有乙個小燈泡,燈泡的狀態有兩種 亮或暗 我們可以通過若干操作使魔板從乙個狀態改變為另乙個狀態。操作的方式有兩種 1 任選一行,改變該行中所有燈泡的狀態,即亮的變暗 暗的變亮 2 任選兩列,交換其位置。當然並不是...
洛谷 P1275 魔板
有這樣一種魔板 它是乙個長方形的面板,被劃分成n行m列的n m個方格。每個方格內有乙個小燈泡,燈泡的狀態有兩種 亮或暗 我們可以通過若干操作使魔板從乙個狀態改變為另乙個狀態。操作的方式有兩種 1 任選一行,改變該行中所有燈泡的狀態,即亮的變暗 暗的變亮 2 任選兩列,交換其位置。當然並不是任意的兩種...
洛谷 P2730 魔板
在成功地發明了魔方之後,魯比克先生發明了它的二維版本,稱作魔板。這是一張有8個大小相同的格仔的魔板 1 2 3 4 8 7 6 5 我們知道魔板的每乙個方格都有一種顏色。這8種顏色用前8個正整數來表示。可以用顏色的序列來表示一種魔板狀態,規定從魔板的左上角開始,沿順時針方向依次取出整數,構成乙個顏色...