农夫让牛在田里踩砖块,每一块砖块有黑白两面,每被踩一下,就可以翻一面(白变黑,黑变白),然而牛的脚比较大,每次踩块都会踩到邻近的4块。现在告诉你砖块组成了N*M的图,问奶牛最少踩几下,可以把所有砖块都变白。如果有解一样大的,就选取字典序最小的。
需要进行枚举,如果我们对第一行的变换状态进行枚举,后面的状态就都能确定。因为当我们变换k行的时候,我们一定要保证,变换完k行后,k-1行一定要是全0的,不然,我们再也无法使k-1行变为0。所以如果确定了第一行的变换,整个图的变换就能够一定确定下来。
1 /* When all else is lost the future still remains. */ 2 /* You can be the greatest */ 3 #define rep(X,Y,Z) for(int X=(Y);X<(Z);X++) 4 #define drep(X,Y,Z) for(int X=(Y);X>=(Z);X--) 5 #define fi first 6 #define se second 7 #define mk(X,Y) make_pair((X),(Y)) 8 #define inf 0x3f3f3f3f 9 #define clr(X,Y) memset(X,Y,sizeof(X))10 #define pb push_back11 //head12 #include 13 #include 14 #include 15 #include 16 #include 17 #include