题目 3326: 蓝桥杯2025年第十六届省赛真题-最短距离
题目 3326: 蓝桥杯2025年第十六届省赛真题-最短距离
时间限制: 2s 内存限制: 192MB 提交: 319 解决: 77
题目描述
在一条一维的直线上,存在着 n 台显示器和 n 个电源插座。老师给小蓝布置了个任务:负责将每台显示器通过电源线与一个插座相连接(每个插座最多只能给一台显示器供电);同时,老师希望所消耗的电源线的长度尽可能的少, 请你帮小蓝计算下电源线的最小消耗长度为多少?
为了便于计算,你只需要考虑直线距离即可。
输入格式
输入的第一行包含一个正整数 n 。
接下来 n 行,每行包含一个整数 xi ,依次表示每台显示器的坐标。
接下来 n 行,每行包含一个整数 yi ,依次表示每个插座的坐标。
输出格式
输出一行包含一个整数表示答案。
样例输入复制
2
0
1
2
3
样例输出复制
4
提示
【评测用例规模与约定】
对于 20% 的评测用例,1 ≤ n ≤ 10 ,0 ≤ xi , yi ≤ 100 ;
对于 40% 的评测用例,1 ≤ n ≤ 100 ,0 ≤ xi , yi ≤ 103 ;
对于 60% 的评测用例,1 ≤ n ≤ 1000 ,0 ≤ xi , yi ≤ 105 ;
对于 80% 的评测用例,1 ≤ n ≤ 10000 ,0 ≤ xi , yi ≤ 109 ;
对于所有评测用例,1 ≤ n ≤ 50000 ,0 ≤ xi , yi ≤ 109 。
1.分析
排序,贪心,最小的匹配最小的。用Long long.
2.代码
#include<iostream>
#include<algorithm>
#include<vector>
#include<cmath>
using namespace std;
const int MAX = 1e5 + 10;
typedef long long LL;
LL n,re;
LL a[MAX], b[MAX];
int main() {cin >> n;for (int i = 0; i < n; i++) {cin >> a[i];}for (int i = 0; i < n; i++) {cin >> b[i];}sort(a, a + n);sort(b, b + n);for (int i = 0; i < n; i++) {re += abs(a[i] - b[i]);}cout << re << endl;return 0;
}