104. 货仓选址

104. 货仓选址

数轴上n个人的坐标,问走的一起的总路程最小是多少?

#include <bits/stdc++.h>

using i64 = long long;

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    
    int n;
    std::cin >> n;

    std::vector<int> a(n);
    for (int i = 0; i < n; ++i) {
        std::cin >> a[i];
    }

    int m = n / 2;
    std::sort(a.begin(), a.end());
    
    i64 ans = 0;
    for (int x : a) {
        ans += std::abs(x - a[m]);
    }
    std::cout << ans << "\n";
}
#include <bits/stdc++.h>

using i64 = long long;

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    
    int n;
    std::cin >> n;

    std::vector<int> a(n);
    for (int i = 0; i < n; ++i) {
        std::cin >> a[i];
    }

    std::sort(a.begin(), a.end());
    
    i64 ans = 0;
    for (int i = 0; i < n; ++i) {
        ans += a[i] - a[i / 2];
    }
    std::cout << ans << "\n";
}
#include <bits/stdc++.h>

using i64 = long long;

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    
    int n;
    std::cin >> n;

    std::vector<int> a(n);
    for (int i = 0; i < n; ++i) {
        std::cin >> a[i];
    }

    int m = n / 2;
    std::nth_element(a.begin(), a.begin() + m, a.end());
    
    i64 ans = 0;
    for (int x : a) {
        ans += std::abs(x - a[m]);
    }
    std::cout << ans << "\n";
}
#include <bits/stdc++.h>

using i64 = long long;

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    
    int n;
    std::cin >> n;

    constexpr int N = 4E4 + 5;
    std::vector<int> cnt(N);
    for (int i = 0, x; i < n; ++i) {
        std::cin >> x;
        ++cnt[x];
    }

    i64 ans = 0;
    for (int i = 0, s = 0; i < N; ++i) {
        s += cnt[i];
        ans += std::min(s, n - s);
    }
    std::cout << ans << "\n";
}
posted @ 2026-03-13 15:29  filt  阅读(4)  评论(0)    收藏  举报