![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分治
zhang_ab
渣渣一枚
展开
-
分治入门——数列分治
分治思想:划分子问题,解决子问题,合并子问题题目:输入一个整数n,然后输入n个整数。若是将n个整数进行冒泡排序(升序),那么请问排完序之后将会发生多少次的数据交换即求序列中存在的逆序对的个数?(1题解:虽然题目说是冒泡,但是冒泡的复杂度是O(n^2),所以必然超时。因此这里使用分治的思想即简单修改一下归并排序。步骤如下: (1)将原序列命名序列A,现在问题为求序列A的逆序对个数并使A序列原创 2018-01-19 22:32:29 · 298 阅读 · 0 评论 -
分治入门——树分治
分治思想:划分子问题,解决子问题,合并子问题题目:POJ1741 题意:给定一棵含有n个节点的无向带权树,满足距离≤k的两点共有多少对?(n≤1e4)题解: (1)首先找到树A的重心,(重心指的是一个节点,将该节点删去之后剩下的最大子树的节点数最小)将其作为树A的根。在数列的分治之中我们是直接去区间的中间为分界线,但是这里,如果随意将某个点删去,最坏的情况可能是这棵树退化成一条链,递归原创 2018-01-20 12:44:39 · 329 阅读 · 0 评论 -
分治入门——平面分治
分治思想:划分子问题,解决子问题,合并子问题题目:UVA 10245 题意:在一个二维平面内给定n个点,求最近的两个点的距离。(n≤10000)题解:直接暴力枚举所有点是肯定行不通的。那么基于分治的思想:按照横坐标排序后,分成两个部分,那么最近距离的点对就是以下的情况 (1)两个点均属于一个区域 (2)两个点属于不同区域 对于(1)的情况,我们可以直接递归求得,因此关键在于对于原创 2018-01-20 21:14:26 · 397 阅读 · 0 评论