2017年9月17日

LCA问题第二弹

摘要: LCA问题第二弹 上次用二分的方法给大家分享了对 LCA 问题的处理,各位应该还能回忆起来上次的方法是由子节点向根节点(自下而上)的处理,平时我们遇到的很多问题都是正向思维处理困难而逆向思维处理比较容易,LCA问题也可以划分为这一类问题的范畴。那是不是就意味着 LCA 无法从正面思维中解决呢?当然不 阅读全文

posted @ 2017-09-17 00:35 detrol 阅读(217) 评论(0) 推荐(1) 编辑

LCA问题

摘要: LCA问题第一弹 上篇文章讲到 区间最值 RMQ 问题,今天,我们来研究一下 LCA 问题。 LCA( Least Common Ancestor)问题:中文名为“ 最近公共祖先”问题。LCA问题定义是这样的:在一个树形结构中,求解两个子节点的公共祖先中离根节点最远的那个祖先节点,换言之,分别从两个 阅读全文

posted @ 2017-09-17 00:33 detrol 阅读(594) 评论(0) 推荐(1) 编辑

树状数组(Binary Indexed Tree,BIT)

摘要: 树状数组(Binary Indexed Tree) 前面几篇文章我们分享的都是关于区间求和问题的几种解决方案,同时也介绍了线段树这样的数据结构,我们从中可以体会到合理解决方案带来的便利,对于大部分区间问题,线段树都有其绝对的优势,今天这篇文章,我们就来欣赏由线段树变形的另外一个数据结构--树状数组, 阅读全文

posted @ 2017-09-17 00:31 detrol 阅读(290) 评论(0) 推荐(1) 编辑

线段树第二弹(区间更新)

摘要: 上篇文章,我们介绍了线段树的基本概念和单点更新、区间查询,今天,我们来接着上次的线段树问题继续深入研究。在解决线段树问题的过程中,我们会遇到要求修改区间中某一元素值的问题,当然也可能会遇到要求修改一段子区间所有值的问题--即区间更新问题。回忆一下上篇文章单点更新的方法是,由叶节点逐级向上进行更新,此 阅读全文

posted @ 2017-09-17 00:30 detrol 阅读(242) 评论(0) 推荐(1) 编辑

线段树+RMQ问题第二弹

摘要: 线段树+RMQ问题第二弹 上篇文章讲到了基于Sparse Table 解决 RMQ 问题,不知道大家还有没有印象,今天我们会从线段树的方法对 RMQ 问题再一次讨论。 正式介绍今天解决 RMQ 问题的方法之前,我先对 RMQ 问题的概念再一次进行说明。RMQ (Range Minimum/Maxim 阅读全文

posted @ 2017-09-17 00:28 detrol 阅读(341) 评论(0) 推荐(1) 编辑

RMQ问题第一弹

摘要: 今天,我给大家分享一下我在学习 RMQ 问题过程中对该问题的理解。 RMQ (Range Minimum/Maximum Query ):中文名为“区间最值查询”。RMQ 问题指的是给定一段区间,针对给定区间进行若干次查询,每次给出不同的待查询子区间范围,要求返回子区间内的最大值或者最小值。 一般此 阅读全文

posted @ 2017-09-17 00:26 detrol 阅读(199) 评论(0) 推荐(1) 编辑

分治法二(平面最近点对)

摘要: 上篇文章介绍了分治法的概念和基本解题步骤,并附加了一个例题帮助大家了解分治法的基本思想,在这篇文章中,我将对分治法的另一个经典问题进行分析,希望我的文章能够将今天的主题解释清楚。接下来我将用三种不同的方法求解“平面最近点对”问题。 问题描述:在一个平面上随机分布着 n 个点,现给定 n 个点的坐标, 阅读全文

posted @ 2017-09-17 00:24 detrol 阅读(4449) 评论(0) 推荐(1) 编辑

分治法(一)

摘要: 泛泛而谈晦涩难懂的概念非常的枯燥,接下来利用排序这样一个问题引入今天的主题 给定7个数字的序列:6,202,100,301,38,8,1 要求对其按照升序进行排序。 首先使用冒泡的方法进行比较排序(每次红色字体的两个数字进行比较,较大者置后) 1 6,202,100,301,38,8,1 2 6,1 阅读全文

posted @ 2017-09-17 00:23 detrol 阅读(833) 评论(0) 推荐(1) 编辑

带权并查集

摘要: 似乎好些天没写文章了,感慨万千啊。 一如既往,先介绍一下题目的需求吧,如下: 题目简述:某人想编写一个字典,该字典中存在正反两种关系,并且这种关系具有某种规则下的传递性质,如下: A 与 B 同义, B 与 C 同义,则 A 与 C同义 ; A 与 B 同义, B 与 C 反义,则 A 与 C反义 阅读全文

posted @ 2017-09-17 00:21 detrol 阅读(996) 评论(0) 推荐(3) 编辑

multimap 和priority_queue详解

摘要: 上一期是关于STL和并查集结合的例题,也附了STL中部分容器的使用摘要,由于是从网上东拼西凑的,感觉有的关键点还是没解释清楚,现在从其中摘出两个容器,用例题对它们的用法进行进一步解释。 以下是例题的介绍 题目简述:有一个人每天往返于一段道路中,走着走着就觉得无聊了,于是自己给自己找乐子发明了一个扔石 阅读全文

posted @ 2017-09-17 00:20 detrol 阅读(815) 评论(0) 推荐(1) 编辑

stl 和并查集应用

摘要: 抱歉这么久才写出一篇文章,最近进度有点慢。这么慢是有原因的,我在想如何改进能让大家看系列文章的时候更方便一些,现在这个问题有了答案,在以后的推送中,我将尽量把例题和相关知识点在同一天推出,其次在代码分享方面,我也做了改进,对应当加入注释的地方略微加了注释。 先介绍一下今天分享的题目 题目简述:有 n 阅读全文

posted @ 2017-09-17 00:18 detrol 阅读(923) 评论(0) 推荐(1) 编辑

尺取法

摘要: 今天要分享的例题和尺取法有关。如下 题目描述:给一个长度为 n 的整型数组,要求在这个数组中找出一个最长的连续片段,满足该片段中包含不同数字的个数不超过 k 。 输入格式:第一行给出两个整型数字 n 和 k ,n 和 k 均不超过 5 * 1e5,第二行给出 n 个整型数字,数字均不超过 1e6 。 阅读全文

posted @ 2017-09-17 00:16 detrol 阅读(1368) 评论(0) 推荐(1) 编辑

二分法详解

摘要: 连续看我文章的朋友就会发现,我写文章有一个特点,总是用经典的例题引出一个方法,在之后的文章中才会介绍这种方法的详细信息。这样做的好处是:避免了先接触干巴巴的概念导致很多朋友看的时候会有索然无味这种体验,由具体题目的分析过程来一步一步优化,最终引出方法这种形式,更能让这种方法变得顺理成章,也更能让读者 阅读全文

posted @ 2017-09-17 00:12 detrol 阅读(12812) 评论(0) 推荐(1) 编辑

二分法

摘要: 最近做了几道关于二分法的题目,觉得比较典型,因此拿出来说一说。 首先,先把题目分享一下。 题目描述:上题中讲了一个故事,故事大意不用过多关注,有用部分为:某地主有一个大粮仓,这个粮仓容量为 n 个单位,但这个粮仓有个小口,每天会有一部分麻雀过来偷吃粮食,同时地主每天也会从别的地方运来粮食填补。开始的 阅读全文

posted @ 2017-09-17 00:09 detrol 阅读(782) 评论(0) 推荐(2) 编辑

Manacher详解

摘要: 之前的字符串题解中对Manacher的思想进行了简略的介绍,在这篇文章中,我将会详细的将这个算法的初衷和具体实现理论进行解释。声明一点,这是我个人的理解,可能有不全面之处,望多包涵。在之前的几篇文章中,我也发现有个别的编辑错误,希望大家在看的时候多加思考,不要被我的思维禁锢。 可能有的人没有看过之前 阅读全文

posted @ 2017-09-17 00:06 detrol 阅读(493) 评论(0) 推荐(1) 编辑

素数筛法

摘要: 之前在解释求素数的一道习题时,提过一个方法,叫素数筛法。下面就对这种方法的过程进行详细的解读。 之前提到 假设所有待判断的数字的上限是L,声明一个长度为L+1的布尔数组A[L+1]。用这个数组来表示对应下标的数字是不是素数。起初,将数组所有成员标记为1,然后按照某种方法将其中的非素数都标记为0即可, 阅读全文

posted @ 2017-09-17 00:04 detrol 阅读(2122) 评论(0) 推荐(1) 编辑

导航