CF1898D Absolute Beauty 题解

思路

容易发现,如果 ai>bi 则将 aibi 交换。

在数轴上标出要交换的四个数的位置若线段 aibi 和 线段 ajbj 互不相交,此时交换比两条线段处于其他位置时更优。

具体证明这里就不再赘述,其他题解讲的已经很清楚了。

所以只需交换最大的 ai 和最小的 bj 即可。

代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
int a[200010], b[200010];
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
int T;
cin>>T;
while(T--) {
int n;
cin>>n;
int mx=-1e9, mn=1e9;
int ans=0;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
cin>>b[i];
if(a[i]>b[i]) swap(a[i],b[i]);
}
for(int i=1;i<=n;i++) {
ans+=abs(b[i]-a[i]);
mx=max(mx,a[i]); mn=min(mn,b[i]);
}
if(mx>mn) ans+=2*(mx-mn);
cout<<ans<<"\n";
}
return 0;
}

本文作者:merlinkkk

本文链接:https://www.cnblogs.com/merlinkkk/p/18306131

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   merlinkkk  阅读(6)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
展开