问题6712--奶牛翻转

6712: 奶牛翻转

[命题人 : ]
时间限制 : 1.000 sec  内存限制 : 256 MiB

题目描述

农场主约翰偶尔会遇到一些无聊的青少年,他们在晚上参观他的农场并翻倒他的奶牛。一天早上,他醒来发现事情又发生了——他的N2头牛开始在一个完美的N×N正方形网格中进行夜间放牧(1N10) ,但他发现其中一些现在已经翻倒了。

幸运的是,农场主约翰用拖拉机和叉车的零件制造了一台出色的机器,即 Cow-Untipperator 3000,它可以一次翻转一大群奶牛,帮助他尽快让所有的奶牛重新站起来。他可以将该机器应用于他的奶牛网格中的任何“左上矩形”——一个包含左上奶牛的矩形子网格。当他这样做时,机器会翻转这个矩形中的每一头奶牛,让倒在地上的奶牛重新站起来,但不幸的是,也会让已经站起来的奶牛翻倒!换句话说,机器“切换”矩形中每头奶牛的状态

农场主约翰认为,通过将他的机器应用到适当的矩形集合上足够多次,他最终可以将所有奶牛恢复到正确的、未倾斜的状态。请帮助他确定执行此操作所需的机器应用程序的最小数量。

请注意,将机器应用于同一个矩形两次是没有意义的,因为这不会对矩形中的奶牛产生净影响。因此,您应该只考虑将机器应用于左上角的每个矩形,可能只应用一次。

输入格式(文件cowtip.in):

输入的第一行是整数N

N个后续行中的每一行包含一个由N个字符组成的字符串,每个字符为0(表示正常的奶牛)或1(表示倾倒的奶牛)。

输出格式(文件cowtip.out):

请输出使所有奶牛恢复站立所需的最小次数。

示例输入:

3

001

111

111

示例输出:

2

在本例中,如果FJ将其机器应用于整个牛群(这是一个有效的左上矩形),他将切换其状态为:

110

000

000

剩下的就是将机器应用于左上角包含两个1的矩形,他就完成了。总共只有两个应用程序。

样例输入 复制


样例输出 复制


来源/分类