1 条题解

  • 0
    @ 2026-2-1 15:43:44
    #include<bits/stdc++.h>
    using namespace std;
    
    int main(){
        int n; // 存储学生人数
        cin >> n; // [1] 输入学生人数n
        int arr[n], arr1[n]; // [2] arr存储男生身高,arr1存储女生身高
        // [3] 输入n个男生的身高
        for(int i = 0; i < n; i++)
            cin >> arr[i];
        // [4] 输入n个女生的身高
        for(int i = 0; i < n; i++)
            cin >> arr1[i];
    
        sort(arr, arr + n); // [5] 男生身高数组升序排序
        sort(arr1, arr1 + n); // [6] 女生身高数组升序排序
        int sum = 0; // [7] 初始化身高差之和为0
        // [8] 贪心策略:最小男生配最大女生,次小配次大,最大化每组身高差
        for(int i = 0; i < n; i++){
            if(arr[i] <= arr1[n - i - 1]){
                sum += arr1[n - i - 1] - arr[i]; // 累加当前组身高差
            }else{
                sum += arr[i] - arr1[n - i - 1]; // 累加当前组身高差
            }
        }
        cout << sum; // [9] 输出所有组身高差之和的最大值
        return 0;
    }
    
    • 1

    信息

    ID
    1029
    时间
    1000ms
    内存
    256MiB
    难度
    1
    标签
    递交数
    4
    已通过
    2
    上传者