列表

详情


NC214361. 滑板比赛

描述

牛牛喜欢玩滑板,牛妹也喜欢玩滑板。
牛牛会n个动作,每个动作的华丽值为 a[i],牛妹会m个动作,每个动作的华丽值为b[i],m ≤ n.
现在他们进行 m 次比赛,每一次比赛两人选择一个动作,且每个动作只能用一次,华丽值大的获胜。
牛牛已经悄悄的打探过,所以知道牛妹参加m次比赛所用动作的顺序。
牛牛想知道怎么安排动作的顺序,使得他可以尽可能多的赢得比赛次数。

输入描述

第一行两个整数 n,m。1 ≤ m ≤ n ≤ 2e5 
第二行包含 n 个整数 a[i], 代表牛牛所有会的动作的华丽值。0 ≤ a[i] ≤ 1e9
第三行包含 m 个整数b[i],代表牛妹所有会的动作的华丽值。给出的顺序就是牛妹参加比赛所用动作的顺序。0≤b[i]≤1e9

输出描述

一个整数,代表牛牛最多可能赢的比赛次数。


示例1

输入:

5 5

3  4 6 2 7

4 4 3 2 6

输出:

4

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++11) 解法, 执行用时: 160ms, 内存消耗: 1784K, 提交时间: 2020-12-06 00:11:10

#include<bits/stdc++.h>
using namespace std;
int a[200005],b[200005],ans=0,n,m;
int main(){
	
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>a[i];
	for(int i=1;i<=m;i++)cin>>b[i];
	sort(a+1,a+1+n);
	sort(b+1,b+1+m);
	int j=1;
	for(int i=1;i<=n;i++){
		if(a[i]>b[j]&&j<=m)ans++,j++;
	}
	cout<<ans<<endl;
	return 0;
} 


Python3 解法, 执行用时: 268ms, 内存消耗: 30404K, 提交时间: 2021-05-20 19:12:25

n,m=map(int,input().split())
a=list(map(int,input().split()))
b=list(map(int,input().split()))
a.sort()
b.sort()
t=0
for i in b[::-1]:
    if a[-1]>i:
        a.pop()
        t+=1
print(t)

上一题