NC231619. 田忌赛马
描述
输入描述
首先,第一行是一个整数 ,代表总共有 组独立的测试数据。
然后是 组测试数据,每组测试数据有三行,
第一行一个整数 ,代表双方各自有多少匹马。
第二行 个整数 , , ,... ,,代表田忌派出参赛的 匹马的速度值,
第三行 个整数 , , ,... ,,代表齐威王派出参赛的 匹马的速度值。
*
*
* ()。
* 保证 , ( 如果 ),且 ()
输出描述
每组测试数据输出一行,每行一个整数代表在该测试数据中田忌最多能赢得的回合数。
示例1
输入:
2 3 2 3 5 1 4 6 5 1 3 5 7 10 4 8 9 11 15
输出:
2 2
说明:
第一组样例中,田忌以速度值为 2 的马迎战齐威王速度值为 6 的马,输掉一回合;田忌以速度值为 3 的马迎战齐威王速度值为 1 的马,赢下一回合;田忌以速度值为 5 的马迎战齐威王速度值为 4 的马,赢下一回合,最终获得 2 回合的胜利。pypy3 解法, 执行用时: 225ms, 内存消耗: 38304K, 提交时间: 2022-04-05 01:07:57
for T in range(int(input())): n = int(input()) a = [0]+sorted(list(map(int,input().split())),reverse = True) b = [0]+sorted(list(map(int,input().split())),reverse = True) i = 1 j = 1 while i<n+1 and j <n+1: if b[j]<a[i]: i+=1 j+=1 else: j+=1 print(i-1)
C++ 解法, 执行用时: 16ms, 内存消耗: 396K, 提交时间: 2022-04-10 20:41:17
#include<bits/stdc++.h> using namespace std; int main(){ int t,n; cin>>t; while(t--){ int p=0,c=0,a[105],b[105]; cin>>n; for(int i=0;i<n;i++){ cin>>a[i]; } for(int i=0;i<n;i++){ cin>>b[i]; } for(int i=0;i<n;i++){ if(a[i]>b[p]){ p++; c++; } } cout<<c<<endl; } }
Python3 解法, 执行用时: 60ms, 内存消耗: 4656K, 提交时间: 2022-04-10 13:22:00
t=int(input()) for T in range(t): n=int(input()) a=list(map(int,input().split())) b=list(map(int,input().split())) j=0 c=0 for i in range(n): if a[i]>b[j]: j=j+1 c=c+1 print(c)