![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
文章平均质量分 87
数据结构
王江奎
这个作者很懒,什么都没留下…
展开
-
850. 矩形面积 II:扫描线+离散化+线段树
Leetcode 850. 矩形面积 II原创 2022-09-19 10:23:47 · 384 阅读 · 0 评论 -
数据分割-并查集+set
小w来到百度之星的赛场上,准备开始实现一个程序自动分析系统。这个程序接受一些形如xi=xj 或 xi≠xj的相等/不等约束条件作为输入,判定是否可以通过给每个 w 赋适当的值,来满足这些条件。输入包含多组数据。然而粗心的小w不幸地把每组数据之间的分隔符删掉了。他只知道每组数据都是不可满足的,且若把每组数据的最后一个约束条件去掉,则该组数据是可满足的。请帮助他恢复这些分隔符。In...原创 2020-01-11 11:14:32 · 311 阅读 · 0 评论 -
HDU1512 Monkey King-左偏树+并查集
Once in a forest, there lived N aggressive monkeys. At the beginning, they each does things in its own way and none of them knows each other. But monkeys can’t avoid quarrelling, and it only happens ...原创 2020-01-11 11:05:48 · 147 阅读 · 0 评论 -
BZOJ2809-左偏树合并
Description在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿。在这个帮派里,有一名忍者被称之为 Master。除了 Master以外,每名忍者都有且仅有一个上级。为保密,同时增强忍者们的领导力,所有与他们工作相关的指令总是由上级发送给他的直接下属,而不允许通过其他的方式发送。现在你要招募一批忍者,并把它们派遣给顾客。你需要为每个被派遣的忍者 支付一定的薪水,...原创 2020-01-10 15:54:10 · 210 阅读 · 0 评论 -
HYSBZ - 2157树链剖分
【题目描述】HYSBZ - 2157树链剖分![在这里插入图片描述](https://img-blog.csdnimg.cn/20190805163744917.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RfVDIzMzMzMzM...原创 2019-08-05 16:44:44 · 152 阅读 · 0 评论 -
树链剖分入门+HYSBZ - 1036树的统计Count
今天学习了树链剖分,记录一下。【题目背景】HYSBZ - 1036树的统计Count【题目分析】题目要求求任意结点之间路径的和以及路径上最大的结点,还有可能修改。如果正常做可能会很复杂(我也不知道正常应该怎么做,应该要用到LCA什么的,我还不太会)。但是如果我们能够用线段树或者树状数组维护这个树,那么这种问题就会变得很简单。树链剖分就是这样一种将树映射在一个数组上变成线性结构然后用线段树...原创 2019-08-01 14:56:19 · 130 阅读 · 0 评论 -
SPOJ - QTREE3Query on a tree again!——树链剖分
【题目描述】SPOJ - QTREE3Query on a tree again!【题目分析】题目要求是输出从111到xxx的路径上遇到的第一个黑色的点。我们可以用树链剖分(不了解的同学请出门左拐,详见树链剖分入门)我们用线段树维护每个区间第一次遇到黑点的位置,这样访问出的点同样是从1开始路径上的第一个点。因为我们总是从根节点1开始,我们在访问的时候从后往前每次访问重链时在线段树上都是一...原创 2019-08-01 17:13:43 · 148 阅读 · 0 评论 -
BZOJ2115XOR——线性基
【题目描述】BZOJ2115XOR——线性基【题目分析】这道题看完以后很懵逼,人家要是走的很复杂呢?各种绕来绕去怎么办?首先我们应该注意到一个很明显的道理:重复的路径会和自身抵消,所以我们大可以随便跑,只要再跑回来就对答案没有影响。因此,有影响的只有选择的路径和经过的环,因为环是可以回到已经经过的点而不抵消的。而且只要我们愿意我们可以去任何一个环(假如环有一个起点x,我们有一条从1到n的...原创 2019-08-06 10:03:34 · 176 阅读 · 0 评论 -
UVALive - 8512——线段树维护线性基
【题目描述】UVALive - 8512XOR【题目分析】这种区间+线性基的问题我们可以考虑用线段树维护,线性基的合并的话就直接暴力合并找到所在区间的线性基后再查找最大的数,我看网上的博客要说消除k的影响什么的,我觉得没有什么必要,直接将初值设置为k,然后从高位向低位找,如果异或了后值会变大就异或,觉得没有什么大问题。还有就是线段树维护的时候函数的返回值最好不要设置成线性基,会RE,具体的...原创 2019-08-08 15:31:26 · 170 阅读 · 0 评论 -
主席树入门
今天学习了一下主席树(这个这么强的名字好像是因为提出这个的人的名字简写和我们胡性主席相同?八卦一下)虽然直接理解起来不容易,但是这种解决问题的思想其实并不陌生。我们可以首先来看维护整个区间第K大的线段树我们将[l,r]区间内数字的多少用线段树进行维护,这样的话为了求取区间第k大,我们先看左区间有多少个数字,如果左区间就有多于K的数字(或者等于K个),我们直接去左区间找,如果左区间没有K个,我...原创 2019-07-27 16:33:40 · 158 阅读 · 0 评论 -
HYSBZ - 2243染色——树链剖分+线段树建树技巧
【题目描述】HYSBZ - 2243染色【题目分析】虽然是一道很裸的树链剖分,可是我一直没有看清楚题,以为求的是路径上出现颜色的种类,然后就写了一个区间染色的线段树进行维护,过样例的时候才发现题读错了,人家要求的是路径上出现的颜色段,所以颜色的种类不重要,重要的是每一段每一段。理所当然,我们应该用线段树维护所在区间有多少段。但是左右区间上传的时候如果边界颜色相同(左节点的右边界和右节点的左边...原创 2019-08-03 17:12:47 · 123 阅读 · 0 评论 -
树状数组初步理解
学习树状数组已经两周了,之前偷懒一直没有写,赶紧补上防止自己忘记(虽然好像已经忘得差不多了)。作为一种经常处理区间问题的数据结构,它和线段树、分块一样,核心就是将区间分成许多个小区间然后通过对大区间的调用来提升效率。因此,我们主要需要了解的就是这种分块方式。不同于线段树直接将区间不断的进行二分,我们将区间二分的同时将父节点直接放在右区间上,从而形成了一个占用空间很小的树。我们仔细观察这张图...原创 2019-03-25 00:01:34 · 167 阅读 · 0 评论 -
树状数组-逆序对-HDU6318
Swaps and InversionsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem DescriptionLong long ago, there was an integer sequence a.Tonyfang think this sequenc...原创 2019-03-13 15:43:48 · 169 阅读 · 0 评论 -
HDU - 4348To the moon——主席树+区间修改
HDU - 4348To the moon【题目描述】【题目分析】题目中说明每次更新后时间都会加1,而且还会需要查询以前的区间,还会需要返回以前的时间,所以是很裸的主席树。区间查询的话我们同样需要用到lazy标记通过这道题我发现线段树的操作还是很灵活的借鉴大佬的代码【AC代码】#include<cstdio>#include<cstring>#inclu...原创 2019-07-29 15:19:28 · 194 阅读 · 0 评论 -
HDU - 6278 Just $h$-index主席树+二分
HDU - 6278 Just hhh-index【题目描述】【题目分析】题目要求在区间[l,r][l,r][l,r]内大于h的数不少于h个,对于这种最大化问题,我们应该想到二分。最小情况显然是1.最大情况显然是r−l+1r-l+1r−l+1,对于一个hhh,我们如何判断能否满足条件呢?我们可以用主席树方便的求出区间第h大,如果区间第h大大于等于h,那么就能满足条件比较伤心的是我虽然...原创 2019-07-30 09:52:28 · 247 阅读 · 3 评论 -
线性基入门
今天学习了神奇的线性基,主要是在解决异或问题时比较有用。假如我们的数字的二进制在x位上都是1(这里指所有的数字总共),那么我们线性基的集合就是x个数字,对应的他们最高位的1分别出现在这x个位置,我们还可以通过重建将他们变成二进制数字只含有一个1的集合(即他们每一个都是222的幂),然后进行异或一定能出现原本所有的数字以及他们之间相互异或的所有数字(所谓的异或无非是0到1或者1到0的变化,只要有一...原创 2019-08-06 13:49:00 · 168 阅读 · 0 评论 -
HDU - 5919 Sequence II——主席树+区间种类++逆序建树
【题目描述】HDU - 5919 Sequence II【题目分析】题目给定一个数组,每次查询一个区间,找出区间内不同数字的个数x,然后输出按出现顺序第x/2向上取整个数字的位置。按照要求,我们首先需要能够找出给定区间不同的数字个数。首先,我们分析一个简单一些的问题:对于右端点固定的区间,如何计算不同左区间内不同数字的个数。我们不妨用一个数组记录cntcntcnt哪些位置出现了一个...原创 2019-07-30 16:17:48 · 193 阅读 · 0 评论 -
CodeForces - 786BLegacy——线段树建图+最短路
【题目描述】CodeForces - 786BLegacy【题目分析】题目大概意思就是有三种操作:从某个点到另一个点从某个点到另一个区间从某个区间到另一个点然后询问从其中一个点到其他所有点的距离——这很显然是一个求单源最短路径的。我们简单的想法显然是建一个图,每次操作就进行暴力连边,反正也没有修改。可是复杂度不允许。我们再观察一下操作:对区间的操作,这让我们不由得想起了线段树...原创 2019-08-03 09:26:19 · 170 阅读 · 0 评论 -
校门外的树——树状数组+区间修改
校门外的树【题目分析】题目描述的是一种区间修改,看起来好像要用线段树。但是对于这种区间内部没有差别并且查询的是区间内的类别的问题,是可以转化为树状数组进行的。毕竟树状数组更加简单。我们的关注点应该放在区间的端点处,然后通过统计端点得到答案。我们不妨用数组a1保存左端点的个数,用数组a2保存右端点的个数(从开始到x)假如查询的是区间[l,r],那么a1[r]是区间[1,r]的种类数,a2[l-...原创 2019-07-22 09:28:06 · 181 阅读 · 0 评论 -
线段树入门
在没有学之前只听名字我以为是像树那样的复杂的数据结构,但是硬着头皮学习之后发现线段树和并查集一样都不是很复杂,重要的是其中的思想。线段树线段树,这种数据结构的神奇之处就在线段二字上——比较擅长处理区间问题。现在假设有一个背景:我们有一个数列,需要知道从第i个到第j个的和(或者最大数、最小数等等,根据问题而定,这里仅仅是为了引入线段树)。并且这个数列是动态的,我们会随时对某一点或者某一个区间的数...原创 2019-03-02 23:36:49 · 298 阅读 · 0 评论