题目
Codeforces链接Problem - 1447B - Codeforces
AcWing链接3763. 数字矩阵 - AcWing题库
思路
如果一个n*m的矩阵里面有许多分散的负数,我们可以两两交换使得负数接近,那么我们就看是否有两个两个配对,也就是负数是奇数还是偶数,这时候我们把0也算上,把0看作一个负数,对答案不影响,而且还更好,减去一个0。
代码
#include<stack>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<queue>
#include<cstring>
#include<deque>
#include<vector>
#include<iostream>
#include<map>
#include<set>
#include<iomanip>
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define ll long long
using namespace std;
ll GCD(ll a,ll b){while(b^=a^=b^=a%=b);return a;}
const int inf=0x3f3f3f3f;
int minn,n,m,x,sum,num,T;
signed main()
{
#ifndef ONLINE_JUDGE
freopen("IO\\in.txt","r",stdin);
freopen("IO\\out.txt","w",stdout);
#endif
IOS
cin>>T;
while (T--)
{
cin>>n>>m;
minn=inf;
num=0;
sum=0;
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
{
cin>>x;
sum+=abs(x);
if (x<=0) num++;
minn=min(abs(x),minn);
}
if (num%2==1) cout<<sum-minn*2<<endl;
else cout<<sum<<endl;
}
return 0;
}