| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 436802 | 顾鑫辰 | 【C6-7】田忌赛马 | C++ | 通过 | 100 | 3 MS | 272 KB | 1724 | 2026-04-18 15:46:03 |
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n; // 输入马的数量 cin >> n; vector<int> tian(n); // 田忌的马 vector<int> king(n); // 齐王的马 // 输入田忌的马速度 for (int i = 0; i < n; ++i) { cin >> tian[i]; } // 输入齐王的马速度 for (int i = 0; i < n; ++i) { cin >> king[i]; } // 排序:从小到大 sort(tian.begin(), tian.end()); sort(king.begin(), king.end()); // 双指针定义 int t_slow = 0, t_fast = n - 1; // 田忌:最慢、最快 int k_slow = 0, k_fast = n - 1; // 齐王:最慢、最快 int win = 0; // 获胜场数 while (t_slow <= t_fast) { // 情况1:田忌最快的马 > 齐王最快的马 → 直接赢 if (tian[t_fast] > king[k_fast]) { win++; t_fast--; k_fast--; } // 情况2:田忌最快的马 < 齐王最快的马 → 用最慢的马去输 else if (tian[t_fast] < king[k_fast]) { t_slow++; k_fast--; } // 情况3:最快的马相等 → 比较最慢的马 else { // 田忌最慢的马 > 齐王最慢的马 → 赢 if (tian[t_slow] > king[k_slow]) { win++; t_slow++; k_slow++; } // 否则用最慢的马去对战齐王最快的马 else { t_slow++; k_fast--; } } } // 输出最大获胜场数 cout << win << endl; return 0; }