1 条题解
-
0
题意分析
分别挑选十五个白棋手和十五个黑棋手,使这三十个棋手能力之和最高
解题思路
这应该是一个典型的贪心问题,可以根据棋手的白棋能力减去黑棋能力排序,选择十五个差值最大的下白棋(这样这十五个选手的白棋贡献度最高),十五个差值最小的下黑棋。
标程
#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
- 上传者