列表

详情


NC207424. 赛马

描述

一天小明与他同学准备赛马,他们每人有n匹马,每匹马有一个固定的战力值,战力值高的马会战胜战力值低的马并赢得比赛。每匹马只能出场比赛一次。小明偷看到了他对手每匹马的出场顺序,小明在更改自己马出场顺序后最多能赢多少场比赛。

输入描述

输入t,代表有t组数据。每组数据输入正整数n,每人的马匹数量。下一行输入n个值a[i],代表小明每匹马的战力值。接下来一行输入n个值b[i],代表对手按顺序出场的每匹马的战力值。(t<=10, n<1000,1<=i<=n,a[i]<1e6,b[i]<1e6)

输出描述

小明在更改马匹出场顺序后,最多能赢的场数。

示例1

输入:

1
3
5 8 8
4 7 10

输出:

2

原站题解

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

C++14(g++5.4) 解法, 执行用时: 5ms, 内存消耗: 372K, 提交时间: 2020-05-31 13:40:22

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

C++11(clang++ 3.9) 解法, 执行用时: 5ms, 内存消耗: 484K, 提交时间: 2020-05-31 15:53:22

#include <iostream>
#include <algorithm>
using namespace std;

int a[1000],b[1000],n,t,i,j;

int main(){
	cin>>t;
	while(t--){
		cin>>n;
		for(i=0;i<n;++i) cin>>a[i];
		for(i=0;i<n;++i) cin>>b[i];
		sort(a,a+n);
		sort(b,b+n);
		for(i=n-1,j=n-1;i>=0&&j>=0;--i,--j)
			for(;j>=0&&a[i]<=b[j];--j);
		cout<<n-i-1<<endl;
	}
	return 0;
}

pypy3(pypy3.6.1) 解法, 执行用时: 68ms, 内存消耗: 19300K, 提交时间: 2020-05-31 13:51:15

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

Python3(3.9) 解法, 执行用时: 22ms, 内存消耗: 2964K, 提交时间: 2021-03-29 15:20:47

for _ in range(int(input())):
    n=int(input())
    a=list(map(int,input().split()))
    b=list(map(int,input().split()))
    aa=sorted(a,reverse=True)
    bb=sorted(b,reverse=True)
    t=0
    for i in bb:
        if aa[0]>i:
            aa.pop(0)
            t+=1
    print(t)

上一题