#P2808. 第3题-最小操作次数

第3题-最小操作次数

题目内容

给定一个NNN*N的二维矩阵,其中包含[1N2][1,N^2]的互不相同的正整数。

定义一种操作:

每次可以选择矩阵中的一个元素,将其与其在顺时针螺旋顺序中的下一个元素交换位置

例如: 在333*3的矩阵中,

螺旋顺序为从左上角[0,0][0,0]开始,向右到[0,2][0,2],向下到[2,2][2,2],向左到[2,0][2,0],再向上到[1,0][1,0],最 后到中心[1,1][1,1]

目标是通过若干次操作,将矩阵变为“顺时针螺旋递增”顺序,即螺旋遍历时元素依次为 1,2,3,...,N21,2,3,...,N^2

求将给定矩阵转换为顺时针螺旋递增顺序所需的最小操作次数。

输入描述

第一行为整数NN;

接下来NN行,每行NN个整数,表示矩阵。

参数范围:

矩阵的N取值范围为[1,103][1,10^3]

矩阵中元素的取值范围[1,N2][1,N^2]

输出描述

一个整数; 表示最小操作次数。

特别注意:

结果可能过大,因此结果需要取模10000000071000000007

例如,计算初始结果为:10000000081000000008,请返回11

样例1

输入

2
3 1
2 4

输出

3

说明

根据要求,通过若干次操作得到的目标矩阵为:

1 21\ 2

4 34\ 3

第一次交换,选择(0,0)(0,0)33与螺旋顺序上相邻的(0,1)(0,1)11交换,矩阵为:

1 31\ 3

2 42\ 4

第二次交换,选择(1,1)(1,1)44与螺旋顺序上相邻的(1,0)(1,0)22交换,矩阵为:

1 31\ 3

4 24\ 2

第三次交换,选择(0,1)(0,1)33与螺旋顺序上相邻的(1,1)(1,1)22交换,矩阵为:

1 21\ 2

4 34\ 3

目标达成;

操作次数33;

样例2

输入

3
3 2 1
6 5 4
9 8 7

输出

10

说明

解释:根据要求,通过若干次操作得到的目标矩阵为:

1 2 31\ 2\ 3

8 9 48\ 9\ 4

7 6 57\ 6\ 5

开始交换(注意选择螺旋顺序上相邻的交换);

11次交换:

3 2 13\ 2\ 1

5 6 45\ 6\ 4

9 8 79\ 8\ 7

22次交换: 3 2 13\ 2\ 1

9 6 49\ 6\ 4

5 8 75\ 8\ 7

33次交换: 3 2 13\ 2\ 1

6 9 46\ 9\ 4

5 8 75\ 8\ 7

44次交换:

3 2 13\ 2\ 1

6 9 46\ 9\ 4

8 5 78\ 5\ 7

55次交换:

3 2 13\ 2\ 1

8 9 48\ 9\ 4

6 5 76\ 5\ 7

66次交换:

3 2 13\ 2\ 1

8 9 48\ 9\ 4

6 7 56\ 7\ 5

77次交换:

3 2 13\ 2\ 1

8 9 48\ 9\ 4

7 6 57\ 6\ 5

88次交换:

3 1 23\ 1\ 2

8 9 48\ 9\ 4

7 6 57\ 6\ 5

99次交换:

1 3 21\ 3\ 2

8 9 48\ 9\ 4

7 6 57\ 6\ 5

1010次交换:

1 2 31\ 2\ 3

8 9 48\ 9\ 4

7 6 57\ 6\ 5

目标达成;

操作次数1010;