算法复习(经典问题整理)

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

(分治,动态,贪心)经典问题整理

分治:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值