a3271237006

导航

第四章作业

题目为:数轴上有n个闭区间[a_i, b_i],需要选取尽可能少的点,使得每个区间内至少包含一个点(不同区间可共享点)。我使用的核心策略是,将所有区间按右端点升序排序,然后依次遍历每个区间:若当前区间不包含已选的最后一个点,则选择当前区间的右端点作为新的点;若当前区间已包含已选的最后一个点,则跳过该区间。简单来说,就是每次选择当前区间的最右端点作为选点。
为何要这样选呢?首先在每一段最右边选一个,这样至少保证了每条线段上都有点,不会遗漏:其次,在最右边选点,也最有可能把点安排在其他区间里面(因为区间按从小到大排序了)。代码中使用了sort函数对n个区间进行排序,排序的时间复杂度为O(n log n)。排序后遍历所有n个区间,每个区间仅被访问一次,时间复杂度为O(n)。整个算法的时间复杂度为O(n log n)。
我对贪心算法的理解是,在局部选择一个看似最好的方案,在每个局部套用这个方案,从而实现整体的最佳方案。当然贪心算法很容易造成误差,但如果考虑得当,它能节省大量算力和分析时间,从而节省人力物力。

posted on 2025-12-20 20:55  随便玩玩233  阅读(0)  评论(0)    收藏  举报