“科林明伦杯”哈尔滨理工大学第十届程序设计竞赛 E 赛马 python
E
好家伙 田忌赛马真就 匹配就不解释了
思路,主要咱不止一匹马 所以就最好的比 对方比这个数小的即可
所以先排序 再选分最高的那个和对方比有比这个小的就赢的多一局 当然最后记得吧比过的对方的马给删除 不然容易重复比较
def f(b,an2):
aa=[0]
for k in range(len(an2),0,-1):
if b>an2[k-1]:
an2.pop()
# print('a')
aa=[1]+[an2]
# print(aa)
return aa
an2.pop()
aa=[0]
return aa
for _ in range(int(input())):
n=int(input())
an1=list(map(int,input().split()))
an2=list(map(int, input().split()))
an2.sort()
an1.sort()
res=0
for i in range(n,0,-1):
# print(i)
# print(f(an1[i-1],an2),an2)
a=f(an1[i-1],an2)
res+=a[0]
an2=a[-1]
# print(len(an2))
if len(an2)==0:
break
# print(a[0],an2)
print(res)
另一种写法:
for _ in range(int(input())):
t=int(input())
list1=list(map(int,input().split()))
list2=list(map(int,input().split()))
list1.sort()
list2.sort()
num=i=j=0
while True:
if i==t:
break
if list1[i]>list2[j]:
num+=1
i+=1
j+=1
else:
i+=1
print(num)