2021传智杯决赛编程题解:课程冲突与和谐对

3 下载量 47 浏览量 更新于2024-08-03 收藏 127KB PDF 举报
"2021第三届传智杯决赛全题解" 这篇资料主要介绍了2021年第三届"传智杯"编程竞赛的决赛题目解析,其中包含了两个具体的编程题目——A-课程和B-序列。这两个题目都涉及到了基础的算法和数据处理。 A-课程问题是一个简单的交集计算问题。题目要求找出同时报名了A、B两个课程的学生数量。输入包括两个整数n和m,分别表示课程A和B的报名人数,以及两组学生的编号列表。解决方案可以采用暴力枚举的方法,通过两层循环比较两个数组中的元素是否相同,如果相同则计数器加一。当数据量较大时,可以优化为双指针算法,提高效率。提供的C++代码示例展示了暴力枚举的方法。 B-序列问题是一个寻找"和谐的一对"的题目。定义"和谐的一对"为满足i < j且ai * aj <= k条件的两名同学。输入包含n(学生数量)和k(限定值),以及n个学生的数值。要解决这个问题,可以通过排序后进行两两比较,计算满足条件的对数。题目限制了n和ai的范围,使得可以使用线性时间复杂度的算法。提供的C++代码示例展示了排序后遍历的方法。 这两个问题都考察了参赛者的基本编程能力,包括数组处理、条件判断、循环结构以及可能的优化策略。对于初学者来说,这类题目有助于提升基础算法理解,而对于有一定经验的程序员,它们也可以作为检验数据结构和算法运用能力的练习。在实际编程比赛中,这类问题的解决速度和效率往往决定了能否在有限时间内完成更多题目,因此优化算法和熟悉常见问题的解决方法至关重要。