小红的矩阵不动点
题号:NC299564
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小红拿到了一个 nm 列的矩阵,她希望其中的矩阵不动点尽可能多,为此她可以进行至多一次如下操作:
\hspace{23pt}\bullet\,选择两个不同位置上,将它们上的元素交换。
\hspace{15pt}请你帮小红求出能得到的最大矩阵不动点数量。

【名词解释】
\hspace{15pt}矩阵不动点:定义整数二元组 \{i,j\} \left(1\leqq i \leqq n,1\leqq j \leqq m \right) 是 nm 列的矩阵 \begin{bmatrix}a_{1,1} & a_{1,2} & \cdots & a_{1,m} \\ a_{2,1} & a_{2,2} & \cdots & a_{2,m} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n,1} & a_{n,2} & \cdots & a_{n,m}\end{bmatrix} 的一个矩阵不动点,当且仅当满足 a_{i,j} = \min(i,j)

输入描述:

\hspace{15pt}第一行输入两个整数 n,m\left(1 \leqq n, m\leqq 500 \right),代表矩阵的行数和列数。
\hspace{15pt}此后 n 行,第 i 行输入 m 个正整数 a_{i,1},a_{i,2},\dots,a_{i,m} \left(1\leqq a_{i,j} \leqq 500 \right),其中,a_{i,j} 代表矩阵的第 i 行第 j 列的元素。

输出描述:

\hspace{15pt}输出一个整数,代表能得到的最大矩阵不动点数量。
示例1

输入

复制
2 3
1 1 4
5 1 4

输出

复制
3
示例2

输入

复制
3 3
1 2 3
2 1 3
3 2 1

输出

复制
4