1 条题解

  • 0
    @ 2025-6-11 22:26:26

    题意分析

    分别挑选十五个白棋手和十五个黑棋手,使这三十个棋手能力之和最高

    解题思路

    这应该是一个典型的贪心问题,可以根据棋手的白棋能力减去黑棋能力排序,选择十五个差值最大的下白棋(这样这十五个选手的白棋贡献度最高),十五个差值最小的下黑棋。

    标程

    #include<bits/stdc++.h>
    using namespace std;
    struct player{
        int white,black;
        player(int white,int black): white(white),black(black) {}
    };
    bool compare(player a,player b){
        return a.white - a.black > b.white - b.black;
    }
    int main(){
        ios::sync_with_stdio(false);
        cin.tie(0);cout.tie(0);
        vector<player> plas;
        int x,y;
        while(cin >> x >> y){
            plas.push_back({x,y});
        }
        sort(plas.begin(),plas.end(),compare);
        int sum = 0;
        for(int i = 0; i <= 14; i++){
            sum += plas[i].white + plas[plas.size() - i - 1].black;
        }
        cout << sum;
        return 0;
    }
    
    • 1

    信息

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