Codeforces Round 910 (Div. 2) A B D

D

绝对值画图

借个图

只有两个线段不相交时,才能有增加,也就是max(a[i],b[i])<min(a[j],b[j])或者max(a[j],b[j])<min(a[i],b[i])
扫维护max(a[i],b[i])和min(a[i],b[i])

#include<iostream>
using namespace std;
#define ll long long
const ll N=200010;
ll a[N];ll b[N];
ll n;
ll mx[N];ll mi[N];

int main(){

ll T;cin>>T;
while(T--){
    scanf("%lld",&n);
    for(ll i=1;i<=n;i++)scanf("%lld",&a[i]);
    for(ll i=1;i<=n;i++)scanf("%lld",&b[i]);

    ll x,y;ll ans=0;
    for(ll i=1;i<=n;i++){
            mx[i]=max(a[i],b[i]);mi[i]=min(a[i],b[i]);
            if(i==1)x=mx[i],y=mi[i];
        x=min(x,mx[i]);y=max(y,mi[i]);
        ans+=mx[i]-mi[i];
    }
    if(y<x){
        //不换
        printf("%lld\n",ans);
    }
    else {
        printf("%lld\n",ans+(y-x)*2);
    }
}

}
posted @ 2025-04-18 09:39  arin876  阅读(29)  评论(0)    收藏  举报