解题思路:
本体关键在于正确的剪枝,我的思路是利用两个变量分别记录第二、第三个数组的扫描位置(三个数组需要提前排序),减少后续数字的判断次数。
注意事项:
https://blog.csdn.net/blue_mxy/article/details/107452201 (这个网站提供的思路是错误的,被卡了很久,当然也有可能是我理解错了)
参考代码:
n, res = int(input()), 0 nums = list(map(lambda in_: sorted(in_), [list(map(int, input().split()))[:n] for _ in range(3)])) # print(*nums, sep='\n') for i in range(n): temp_index_0, temp_index_1 = 0, 0 # second sequence for j in range(temp_index_0, n): a, b = 0, 0 if nums[1][j] > nums[0][i]: temp_index_0 = j for k in range(temp_index_1, n): if nums[2][k] > nums[1][j]: b = n - k temp_index_1 = k res += b break print(res)
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:958 |
WU-蓝桥杯算法提高VIP-勾股数 (C++代码)浏览:1592 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:470 |
1124题解浏览:591 |
分糖果 (C语言代码)浏览:912 |
Pascal三角 (C语言代码)浏览:641 |
简单的a+b (C语言代码)浏览:415 |
母牛的故事 (C语言代码)浏览:562 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:568 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:556 |