Part 1:CDQ分治 CDQ分治讲解博客 可以把CDQ分治理解为类似与归并排序求逆序对个数的一种分治算法(至少我现在是这么想的)。先处理完左右两边各自对答案的贡献,在处理跨越左右两边的对答案的贡献。 例题: 逆序对(二维偏序) 过水,不讲。 三维偏序 第一维先sort,第二维由归并保证,第三维在 ...
分类:
其他好文 时间:
2020-07-14 15:08:47
阅读次数:
90
前言 有一个汉罗塔的游戏如下: 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。 大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。 大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根 ...
分类:
编程语言 时间:
2020-07-14 13:52:30
阅读次数:
92
为什么要学习数据结构和算法很多人在实际工作中,并不会直接实现数据和写一个算法来解决实际问题,因为这些都在类库或者框架内部实现了,只需要调用类库或框架提供的api。这些api极大的帮助了我们快速实现业务需求,开发出符合要求的产品。这样的api调用对程序猿(媛)来说不是那么的困难,导致现在越来越多的人开始步入这个高薪行业。做开发的人越来越多,为了提高门槛,很多企业开始注重候选人的基本功那就是数据结构和
分类:
编程语言 时间:
2020-07-14 10:34:22
阅读次数:
60
归并排序 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。 作为一种典型的分而治之思想的算法应用,归并排序的实现由两种方法: 自 ...
分类:
编程语言 时间:
2020-07-12 12:09:18
阅读次数:
65
##一、归并排序 该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 分割: 将数组从中点进行分割,分为左、右两个数组 递归分割左、右数组,直到数组长度小于2 归并: 如果需要合并,那么左右两数组已经有序了。 创建一个临时存储数组temp,比较两数组第一个元素,将较小的 ...
分类:
编程语言 时间:
2020-07-11 22:55:51
阅读次数:
61
算法的开章,递归是实现其他高级算法如深度优先、分治等的基础; 碰到一个题目就找它的重复性,重复性有最近的重复性(根据重复性怎么构造怎么分解-->分治、回溯等办法,本质就是递归),或者最优重复性(即动态规划)。 本质上就是找它的重复性。 找重复性以及分解问题,最后组合每个子问题的结果。 1. 分治 D ...
分类:
编程语言 时间:
2020-07-11 19:23:28
阅读次数:
48
Given a string of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. Th ...
分类:
其他好文 时间:
2020-07-11 12:41:31
阅读次数:
54
完美子图 (分治 $\star\star\star $) Descrption 小 \(Q\) 和小 \(P\) 都非常喜欢做一些有趣的题目,他们经常互相出一些题目来考对方。 一天,小 \(Q\) 给小 \(P\) 出了这样一道题目:给出一个 \(n\times n\) 的网格图,在网格中放置 \( ...
分类:
其他好文 时间:
2020-07-11 12:25:48
阅读次数:
93
当一个问题用递推不好描述时,将目光从整体放到局部,用递归描述对于每个元素我们需要做什么。 问题:text 从 point1 、text2 从 point2 开始的最长公共子序列为 n ,具有递归结构,并存在大量重复子问题。 分治: public final int longestCommonSubs ...
分类:
其他好文 时间:
2020-07-11 10:00:21
阅读次数:
62
刚开始想出了一个分治做法,但是比较麻烦,需要分 4 中情况讨论. 后来偷看了一眼标签发现是线段树,然后就想出了这个线段树做法. 考虑序列以 $r$ 为右端点的答案,有 $\sum_{l=1}^{i} max(l,i)-min(l,i)=i-l$. 其中这个条件可以写成 $max(l,i)-min(l ...
分类:
其他好文 时间:
2020-07-11 09:21:57
阅读次数:
70