解题思路:
本体关键在于正确的剪枝,我的思路是利用两个变量分别记录第二、第三个数组的扫描位置(三个数组需要提前排序),减少后续数字的判断次数。
注意事项:
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语言训练-素数问题 (C语言代码)浏览:1695 |
众数问题 (C语言代码)浏览:911 |
完数 (C语言代码)浏览:757 |
打印十字图 (C语言代码)浏览:2820 |
1048题解(读入回车问题)浏览:628 |
【出圈】 (C++代码)简单循环浏览:699 |
C二级辅导-等差数列 (C语言代码)浏览:831 |
C语言程序设计教程(第三版)课后习题5.5 (Java代码)浏览:563 |
C语言程序设计教程(第三版)课后习题8.4 (C++代码)浏览:472 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:672 |