这道题我觉得出的不错。
通过题目的分析你会得出如下的结论。
题目说明每一行每一列都是回文串。故4个角是都相等的。
那么问题就转换成了,求不等式:
就转换成了仓库选址的那道问题。
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=110;
typedef long long int LL;
LL a[N][N];
int main(void)
{
int t; cin>>t;
while(t--)
{
int n,m; cin>>n>>m;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin>>a[i][j];
LL ans=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
LL s[4];
s[0]=a[i][j],s[1]=a[i][m-1-j],s[2]=a[n-1-i][j],s[3]=a[n-1-i][m-1-j];
sort(s,s+4);
LL temp=s[2];
for(int k=0;k<4;k++) ans+=abs(temp-s[k]);
}
}
cout<<ans/4<<endl;//除以4是因为四个角枚举了四遍
}
return 0;
}