题解
2026-01-11 20:03:44
发布于:浙江
0阅读
0回复
0点赞
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> tianji(n), king(n);
for (int i = 0; i < n; i++) {
cin >> tianji[i];
}
for (int i = 0; i < n; i++) {
cin >> king[i];
}
// 从大到小排序
sort(tianji.begin(), tianji.end(), greater<int>());
sort(king.begin(), king.end(), greater<int>());
int left1 = 0, right1 = n - 1; // 田忌的左右指针
int left2 = 0, right2 = n - 1; // 齐王的左右指针
int win = 0; // 田忌赢的场数
while (left1 <= right1) {
// 情况1:田忌最强的马能赢齐王最强的马
if (tianji[left1] > king[left2]) {
win++;
left1++;
left2++;
}
// 情况2:田忌最弱的马能赢齐王最弱的马
else if (tianji[right1] > king[right2]) {
win++;
right1--;
right2--;
}
// 情况3:田忌最弱的马赢不了齐王最强的马,用它去消耗齐王最强的马
else {
if (tianji[right1] < king[left2]) {
win--;
}
right1--;
left2++;
}
}
cout << win * 200 << endl;
return 0;
}
这里空空如也







有帮助,赞一个