A. Array Balancing
题意:给出a和b两个数组,可以对相同位置上的a和b进行交换,求a和b数组中所有相邻两个数的绝对值之和的最小值。
思路:使较小的在一边,较大的在一边。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 30;
int a[N],b[N];
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
memset(a,0,sizeof a);
memset(b,0,sizeof b);
for(int i = 1 ; i <= n ; i ++ ) cin>>a[i];
for(int i = 1 ; i <= n ; i ++ ) cin>>b[i];
ll sum = 0;
for(int i = 1 ; i <= n ; i ++ ) if(a[i] > b[i]) swap(a[i],b[i]);
for(int i = 1 ; i < n ; i ++ )
{
sum += abs(a[i]-a[i+1]);
sum += abs(b[i]-b[i+1]);
}
cout<<sum<<"\n";
}
return 0;
}