#joi2018yoc. [joi2018_yo_c]幹線道路 (Trunk Road)

[joi2018_yo_c]幹線道路 (Trunk Road)

问题描述

JOI市被划分为HH条直行的道路和WW条直行的道路,形成了棋盘的格子形状。道路之间的间隔为11。JOI市决定从这H+WH+W条道路中选择一条东西方向的道路和一条南北方向的道路,共计22条道路作为干线道路。

将从北边数第ii条道路(1iH1≦i≦H)和从西边数第jj条道路(1jW1≦j≦W)的交叉点记为(i,j)(i,j)。交叉点(i,j)(i,j)到从北边数第mm条道路(1mH1≦m≦H)的距离为im|i-m|,交叉点(i,j)(i,j)到从西边数第nn条道路(1nW1≦n≦W)的距离为jn|j-n|。另外,交叉点(i,j)(i,j)附近居住着Ai,jA_{i,j}个居民。

求选择了22条干线道路时,对于JOI市所有居民来说,距离最近的交叉点到最近的干线道路的距离总和的最小值。

约束条件

  • 2H252 ≦ H ≦ 25
  • 2W252 ≦ W ≦ 25
  • 0Ai,j1000 ≦ A_{i,j} ≦ 100 (1iH1 ≦ i ≦ H, 1jW1 ≦ j ≦ W)

输入

输入以以下格式从标准输入中给出。

HH WW A1,1A_{1,1} A1,2A_{1,2} ... A1,WA_{1,W} : AH,1A_{H,1} AH,2A_{H,2} ... AH,WA_{H,W}

输出

输出JOI市所有居民中,距离最近的交叉点到最近的干线道路的距离总和的最小值。

子问题 1 [10分]

  • Ai,j=1A_{i,j} = 1 (1iH1 ≦ i ≦ H, 1jW1 ≦ j ≦ W)

子问题 2 [90分]

  • 没有附加限制。

输入示例 1

3 5
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1

输出示例 1

8

例如,选择从北边数第22条道路和从西边数第11条道路作为干线道路。


输入示例 2

5 5
1 2 3 1 5
1 22 11 44 3
1 33 41 53 2
4 92 35 23 1
4 2 6 3 5

输出示例 2

164

例如,选择从北边数第33条道路和从西边数第22条道路作为干线道路。