codeforces910 D题

hellocccl 发布于 2024-10-17 221 次阅读


https://codeforces.com/contest/1898/problem/D

对于这类问题 可以将问题具象化

刚开始尝试了推式子,发现没有头绪。

实则应该将|ai-bi|转移到坐标轴上 再进行分析 这样就可以去掉绝对值的正负问题。

//ALL IN
//#pragma GCC optimize("Ofast")
//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
#define int long long
#define double long double
const int N=2e5+7;
const int mod=1e9+7;
const int inf=4e18;
mt19937 rnd(time(0));
clock_t start,final;// start=clock(); last=(final-start)*1.0/1000
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-'0',ch=getchar();}return x*f;}
inline void write(int x){if(x<0)putchar('-'),x=-x;if(x>9)write(x/10);putchar(x%10+'0');return;}
int a[N];
int b[N];
int f[N];
map<int,int>mp;
set<int>st;
stack<int>sk;
deque<int>dq;
multiset<int>mt;
priority_queue<int>pq;

void solve(){
    int n;cin>>n;
    int sum=0;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=n;i++){
        cin>>b[i];
    }
    for(int i=1;i<=n;i++){
        sum+=abs(a[i]-b[i]);
    }
    int l=inf;
    int r=-inf;
    for(int i=1;i<=n;i++){
        l=min(l,max(a[i],b[i]));
        r=max(r,min(a[i],b[i]));
    }
    sum=sum+(2*(r-l)>0?2*(r-l):0);
    cout<<sum<<'\n';
}

signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int _=1;
    cin>>_;
    while(_--)solve();
}
此作者没有提供个人介绍
最后更新于 2024-10-17