原题链接:蓝桥杯2018年第九届真题-递增三元组
解题思路:
本体关键在于正确的剪枝,我的思路是利用两个变量分别记录第二、第三个数组的扫描位置(三个数组需要提前排序),减少后续数字的判断次数。
注意事项:
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语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复