NC207424. 赛马
描述
输入描述
输入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)