传送门:P6201 [USACO07OPEN]Fliptile S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
题目大意:给一个n*m的01矩阵,每次翻动某个矩阵的时候也会翻动有相邻边的值,即上下左右和其本身的值都会改变,求在翻动次数最少并且在字母序最小的情况下,翻动次数的矩阵,第i行第j列的数表示翻动该矩阵的次数,如果无解,输出IMPOSSIBLE.
思路:枚举出翻动第一行的所有情况(2的m次方)然后在这种情况下认为每个的值只受下一行的影响(其实还是受旁边的值的影响的,但是因为a[i][j]=!(!(a[i][j])),即翻转两次之后的值是原来的值,所以对于同一行来说,分两种情况,一是相邻的两个都要翻,二是两个不相邻)
对于一:
例如:
0 0 0
1 1 0
1 0 1
第一次翻转得:
0 0 0
0 1 0
0 1 1
第二次翻转得:
0 0 0
0 0 0
1 0 0
所以相邻得两个就消掉了。
对于二:
例如:<