#FISH13. FISH 吃大鱼

FISH 吃大鱼

题目背景

FISH 喜欢整齐,不喜欢混乱。连吃饭也是。

自在大学城集训起,@ 有了一个奇怪的习惯,那就是:吃大鱼前先将大鱼摆整齐。但现在 FISH 遇到了亿点困难,需要你来帮助。

题目描述

这个难题是这样子的:FISH 的餐桌上有 n×n(n500)n\times n(n\le 500) 只大鱼,这些大鱼都要么头朝上,要么尾巴朝上。FISH 想要把所有大鱼都头朝上摆。好在 FISH 的大鱼十分有秩序,只要 FISH 命令,就可以将部分大鱼一起反转。具体是:如果命令 (i,j)(i,j),就能将左上角为 (1,1)(1,1)、右下角为 (i,j)(i,j) 的矩形内的大鱼全部反转。即原来头朝上变为尾巴朝上,原来尾巴朝上变为头朝上

现在 FISH 饿极了,想要尽快吃上饭。于是需要你来帮助 FISH,最少要多少步才能将所有大鱼都变为头朝上呢?

注意到,命令同一个矩形两次是没有意义的,因为这不会对大鱼产生任何影响。所以你只需要对每个矩形考虑一次,尽快地帮助 FISH 吃上大鱼。

输入格式

输入共 n+1n+1 行。

  • 第一行包含一个整数 nn,表示 FISH 的桌上有 n×nn\times n 条鱼。
  • 接下来 nn 行各包含一个长度为 nn 的字符串,这个字符串仅由 0011 组成。第 ii 行的第 jj 个字符表示第 (i,j)(i,j) 条鱼的状态,00 表示头朝上,11 表示尾巴朝上。

输出格式

输出仅包含一行,一个整数。表示 FISH 能吃上大鱼的最少操作次数。

样例

3
001
111
111
2

样例解释

  1. 先命令 (3,3)(3,3),将所有鱼反转一次。
  2. 命令 (1,2)(1,2),将上面两只鱼反转过来。

数据范围

  • 对于 50%50\% 的数据:1n101\le n\le10
  • 对于 100%100\% 的数据:1n5001\le n\le 500。字符串仅由 0011 组成。