#L0453. 棋盘翻转取最大值

棋盘翻转取最大值

题目描述

有一个 nnmm 列的棋盘,每个格子中放有一枚硬币,硬币正面朝上(记为 11)或反面朝上(记为 00)。

每枚硬币的价值定义为:与其上下左右相邻的硬币中,与它正反面相同的硬币数的平方。即若一枚硬币有 kk 个相邻硬币与它同面,则它的价值为 k2k^2

你可以进行任意次操作,每次操作选择一整行,将该行所有硬币翻转(00111100)。

请计算所有硬币价值之和的最大可能值。

输入格式

第一行两个正整数 n,mn, m,用空格分隔。

接下来 nn 行,每行包含 mm 个字符(0011),表示棋盘初始状态。

输出格式

输出一行一个整数,表示所有硬币价值之和的最大可能值。

样例

4 4
1010
1111
1011
1100
68

提示

评测用例规模与约定

  • 对于 30%30\% 的评测用例,n,m20n, m \leq 20
  • 对于所有评测用例,1n,m10001 \leq n, m \leq 1000
难度 普及+/提高-
通过率
尝试 0
已通过 0
ID
1181
类型
传统题
Time Limit
1000ms
Memory Limit
512MiB
上传者