思路
对于点(i,j),其上的数字应该与(i,m-j+1)、(n-i+1,j)、(n-i+1,m-j+1)上面的数字相同,即这四个数字应该相同
Code
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=110;
ll a[N][N];
bool st[N][N];
int main(){
int T;
cin>>T;
while(T--){
memset(st,false,sizeof st);
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j];
ll res=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(!st[i][j]){
int t=0;
ll b[10];
st[i][j]=true;
b[++t]=a[i][j];
if(!st[i][m-j+1]) st[i][m-j+1]=true,b[++t]=a[i][m-j+1];
if(!st[n-i+1][j]) st[n-i+1][j]=true,b[++t]=a[n-i+1][j];
if(!st[n-i+1][m-j+1]) st[n-i+1][m-j+1]=true,b[++t]=a[n-i+1][m-j+1];
if(t==1) continue;
if(t==2) res+=abs(b[1]-b[2]);
else{
sort(b+1,b+5);
res=res+b[3]+b[4]-b[1]-b[2];
}
}
cout<<res<<endl;
}
return 0;
}