吴梓峤
(吴梓峤)
1
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=2e5+10;
inline int read(){
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*f;
}
int n,m,a[N],b[N],t;
ll num=0;
bool cmp(int a,int b){
return a>b;
}
int main(){
cin>>t;
while(t--){
num=0;
n=read(),m=read();
for(int i=1;i<=n;i++) a[i]=read();
for(int j=1;j<=m;j++) b[j]=read();
sort(b+1,b+m+1);
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++)
num+=abs(a[i]-b[i]);
cout<<num<<endl;
}
return 0;
}
题目传送口:https://www.xinyoudui.com/ac/contest/747004E6F00060F03109486/problem/9783
郑彦鑫
(郑彦鑫)
5
abs(a[i]-b[i]);
不仅要求a[i]-b[i]还要和a最后一个元素和b最后一个元素比较
if(abs(a[i]-b[t])>=abs(a[j]-b[h]))
{
ans+=abs(a[i]-b[t]);
i++;
t--;
}
else
{
ans+=abs(a[j]-b[h]);
j--;
h++;
}
2 个赞
吴梓峤
(吴梓峤)
6
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=2e5+10;
inline int read(){
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*f;
}
int n,m,a[N],b[N],t;
ll num=0;
bool cmp(int a,int b){
return a>b;
}
int main(){
cin>>t;
while(t--){
num=0;
n=read(),m=read();
for(int i=1;i<=n;i++) a[i]=read();
for(int j=1;j<=m;j++) b[j]=read();
sort(b+1,b+m+1);
sort(a+1,a+n+1,cmp);
int i=1,j=n,t=1,h=m;
while(i<=j)
if(abs(a[i]-b[t])>=abs(a[j]-b[h])) num+=abs(a[i]-b[t]),i++,t--;
else num+=abs(a[j]-b[h]),j++,h--;
cout<<num<<endl;
}
return 0;
}