最后一个测试点运行超时有点严格,一直都是O(n),但无论怎么写都会在超时边缘徘徊。
解决办法
if __name__ == '__main__':
n = int(input())
p = 0
m = {("J", "B"): 0, ("B", "C"): 0, ("C", "J"): 0, ("J", "C"): 0, ("C", "B"): 0, ("B", "J"): 0}
for i in range(n):
a, b = input().split()
if a == b:
p += 1
else:
m[(a, b)] += 1
aj = m[("J", "B")]
ab = m[("B", "C")]
ac = m[("C", "J")]
aw = ab + ac + aj
ma = max(aj, ac, ab)
bc = m[("J", "C")]
bb = m[("C", "B")]
bj = m[("B", "J")]
mb = max(bj, bc, bb)
r = ""
if ma == ab:
r += "B "
elif ma == ac:
r += "C "
else:
r += "J "
if mb == bb:
r += "B"
elif mb == bc:
r += "C"
else:
r += "J"
print(aw, p, n-aw-p)
print(n-aw-p, p, aw)
print(r)