(分治,动态,贪心)经典问题整理
分治:
1、求两个有序数组的中位数和Topk问题
参考:https://www.cnblogs.com/voidsky/p/5373982.html
实际上述解法的渐进时间复杂度为O(logn),在第一个数组中不断二分查找c1的位置从而c2的位置也随之固定。
2、黑白点配对问题: 给定平面上 n 个白点和 n 个黑点,试设计一个分治算法将每个白点与一个黑 点相连,使得所有连线互不相交
参考:https://blog.youkuaiyun.com/u010244645/article/details/64920822
这个算法不是很稳定,他首先按照凸包算法,选定一个起始点,将剩余点按极角排序,用和起始点配对的第一个点将剩余解空间划分(划分时候必须保证两个解空间中的黑白点个数相同,才能保证算法的正确性),达到分治目的。
3、给定凸多边形 p1,p2,…,pn(边界逆时针顺序)和 n 个点 q1,q2,….,qn,试设计一 个分治算法计算 q1,q2,….,qn中位于凸多边形 p1,p2,… ,pn内部的点的个数
这个算法的思路首先是wipeout,用矩形将一部分点筛除,然后选取凸包最左下方的点p0算极角(p,q都算),这样不在p0pi夹角内的q也被筛除。最后只剩下

图中所示的情形,只需要判断qj是否在围成的三角形中。
(上述方法不能严格算是分治法,先记录吧)
4、 设 A[1:n]是由不同实数组成的数组,如果 i< j且 A[i]&g

本文整理了分治算法的经典问题,包括求两个有序数组的中位数、黑白点配对、凸多边形内点计数、反序对计算、两数之和判断、单调数组最大值查找、天际线问题以及友谊点对统计。通过案例分析,展示了分治法在解决这些问题上的应用和思路。
最低0.47元/天 解锁文章
1047

被折叠的 条评论
为什么被折叠?



