测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A34437. 田忌赛马问题描述你要和田忌赛马。你们各自有 N 匹马,并且要进行 N 轮比赛,每轮比赛,你们都要各派出一匹马决出胜负。你的马匹的速度分别为 u1,u2,........un,田忌的马匹的速度分别为u1,u2,........un。田忌会按顺序派出他的马匹,请问你要如何排兵布阵,才能赢得最多轮次的比赛 ?巧合的是,你和田忌的所有马匹的速度两两不同,因此不可能出现平局。输入描述第一行一个整数 N 。…

填空题 较难

题目描述

田忌赛马

问题描述

你要和田忌赛马。你们各自有 N 匹马,并且要进行 N 轮比赛,每轮比赛,你们都要各派出一匹马决出胜负。

你的马匹的速度分别为 u1,u2,........un,田忌的马匹的速度分别为u1,u2,........un。田忌会按顺序派出他的马匹,请问你要如何排兵布阵,才能赢得最多轮次的比赛 ?巧合的是,你和田忌的所有马匹的速度两两不同,因此不可能出现平局。

输入描述

第一行一个整数 N 。保证 1≤ N ≤ 50000。

接下来一行N个用空格隔开的整数,依次为 u1,u2,........un,表示你的马匹们的速度。保证 1≤ ui ≤2N。

接下来一行N个用空格隔开的整数,依次为 u1,u2,........un,表示田忌的马匹们的速度。保证  1≤ ui ≤2N。

输出描述

输出一行,表示你最多能获胜几轮。

特别提醒

在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。

样例输入1

3
1 3 5
2 4 6

样例输出1

2

样例解释1

第1轮,田忌派出速度为2的马匹,你可以派出速度为3的马匹迎战,本轮你获胜。

第2轮,田忌派出速度为4的马匹,你可以派出速度为5的马匹迎战,本轮你获胜。

第3轮,田忌派出速度为6的马匹,你可以派出速度为1的马匹迎战,本轮田忌获胜。

如此,你可以赢得 2 轮比赛。

样例输入2

5
10 3 5 8 7
4 6 1 2 9

样例输出2

5

参考答案

#include <bits/stdc++.h> using namespace std; const int N = 100005; int a[N], t; int b[N], h; int n; int main() { scanf("%d", &n); for (int i = 1; i <= n; ++i) { scanf("%d", &a[i]); } for (int i = 1; i <= n; ++i) { scanf("%d", &b[i]); } h = 1; t = 0; sort(a + 1, a + n + 1); sort(b + 1, b + n + 1); int ans = 0; for (int i = 1; i <= n; ++i) if (a[i] > b[h]) ++ans, ++h; printf("%d\n", ans); return 0; }
上一题 下一题