没有白走的路,每一步都算数🎈🎈🎈
在三个大小相同的数组中,输出有多少组(i,j,k)元组满足A[i]<B[j]<C[k]
第一行:
表示输入三个数组的大小
接下来三行:
输入的三个数组
输出有多少的元组
样例输入:
5
1 1 1
2 2 2
3 3 3
样例输出:
27
暴力法求解:
竟然能够通过50%的测试案例。
优化暴力法1
算法依旧超时
优化暴力法2
仍旧超时
优化暴力法3
AC代码
发现这个包竟然没有超时
import bisect
N = int(input())
A = sorted(list(map(int, input().split())))
B = sorted(list(map(int, input().split())))
C = sorted(list(map(int, input().split())))
cnt = 0
# 对 b 遍历 分别检索 a, c
for i in range(N):
n1 = bisect.bisect_left(A, B[i])
n2 = N - bisect.bisect_right(C, B[i])
cnt += n1 * n2
print(cnt)
摘自《《晚熟的人》》:
每个人都想把手伸向夜空去捕捉属于自己的星星,但是很少有人能正确地知道自己的星星在哪里。