小慕接手了一个旧的能量管理系统,系统中维护着一张大尺寸的二维能量矩阵,用来记录不同能量单元在各存储位上的数值。 矩阵的每一行代表一个能量单元组(类似能量类型),每一列代表一个存储节点。 第 `i` 行第 `j` 列的数值表示第 `i` 个能量单元组存放在第 `j` 个存储节点中的能量值。 现在,小慕需要将旧矩阵 `oldMatrix` 中的数据同步到新矩阵 `newMatrix` 中。 为了节省能量消耗,同步操作按照以下规则和顺序进行: 对于所有满足以下条件的能量单元组(即一整行),执行一次组级同步: * 该组中包含的存储节点数 `>= 2`; * 且其中 `>= 50%` 的存储节点上的能量值发生了变化(即 `oldMatrix[i][j] != newMatrix[i][j]`)。 执行一次组级同步的耗时为 `2`,并且该组中所有存储节点上的能量值均被视为已同步。 在组级同步完成后,基于更新后的数据,对每个满足以下条件的存储节点(即一整列)执行节点级同步: * 该节点中包含的能量单元组数 `>= 2`; * 且其中 `>= 50%` 的能量单元组上的能量值发生了变化。 执行一次节点级同步的耗时为 `3`,该节点中所有能量单元组上的能量值均被视为已同步。 在前两步之后,对仍存在能量差异的单个存储位置,执行。 每个位置的同步耗时为 `1`。 最终,请输出完成所有同步所需的总能量耗时。
提示:带虚线的词点一下有通俗解释。
输入描述
输入包含两个相同尺寸的矩阵 `oldMatrix` 与 `newMatrix`: * 第一行包含两个整数 `n` 和 `m`,分别表示魔法分区数量(行数)与能量仓库数量(列数); * 接下来 `n` 行,每行 `m` 个非负整数,表示旧能量矩阵 `oldMatrix`; * 再接下来 `n` 行,每行 `m` 个非负整数,表示新能量矩阵 `newMatrix`。 保证: * `1 <= n, m <= 100` * 所有能量值均为非负整数。
输出描述
输出一个整数,表示完成同步所需的总能量耗时。
示例
示例 1
输入
4 3 1 2 3 2 2 2 1 1 1 5 5 5 1 2 3 3 2 2 1 0 1 5 6 5
输出
4
说明:行更新(每行耗时2) 本例中每行变化数都不到2,所以这一阶段没触发。 列更新(每列耗时3) 第2列有两格变化,因此整列更新一次,耗时3。 单格更新(每格耗时1) 只剩下(第2行, 第1列)那一格没被覆盖,耗时1。
时间限制 1000 ms · 内存限制 128 MB