
坑爹的数据结构
文章平均质量分 79
杨子曰
这个作者很懒,什么都没留下…
展开
-
ST表——杨子曰数据结构
ST表——杨子曰数据结构今天我们来曰一种O(1)查询的数据结构——ST表它,就是RMQ问题的克星!给你一个数列,对于询问[l,r],输出区间[l,r]内的最大值(你喜欢最小值也可以啦!)这……我用线段树O(log n)(搞一搞不久好了吗?不好!!!我们是追求速度的人,由于它没有更新操作,我们可以做到O(1)查询我们的ST表闪亮登场!!(在下面的东西前你也可以先阅读一下:谈谈最近公共祖...原创 2019-11-06 19:36:02 · 306 阅读 · 0 评论 -
左偏树——杨子曰数据结构
左偏树——杨子曰数据结构先扔出一道题(【洛谷】P3377 【模板】左偏树(可并堆)):题目描述如题,一开始有N个小根堆,每个堆包含且仅包含一个数。接下来需要支持两种操作:操作1: 1 x y 将第x个数和第y个数所在的小根堆合并(若第x或第y个数已经被删除或第x和第y个数在用一个堆内,则无视此操作)操作2: 2 x 输出第x个数所在的堆最小数,并将其删除(若第x个数已经被删除,则输出-1...原创 2019-08-19 16:00:05 · 360 阅读 · 0 评论 -
【SPOJ2916 GSS5】Can you answer these queries V——杨子曰题目
【SPOJ GSS5】Can you answer these queries V——杨子曰题目题目描述You are given a sequence A[1], A[2], …, A[N] . ( |A[i]| <= 10000 , 1 <= N <= 10000 ). A query is defined as follows: Query(x1,y1,x2,y2) =...原创 2019-05-13 14:01:50 · 405 阅读 · 1 评论 -
线段树(六)可持久化线段树 (主席树)——杨子曰算法
线段树(七)可持久化线段树 (主席树)——杨子曰算法突然意识到一个问题,线段树应该是数据结构不应该说是杨子曰算法,算了算了……原创 2020-08-22 17:06:56 · 331 阅读 · 0 评论 -
平衡树之Treap(树堆)——杨子曰数据结构
平衡树之Treap(树堆)——杨子曰数据结构来道题(Tyvj 1728 / HYSBZ - 3224):您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:插入x数删除x数(若有多个相同的数,因只删除一个)查询x数的排名(若有多个相同的数,因输出最小的排名)查询排名为x的数求x的前驱(前驱定义为小于x,且最大的数)求x的后继(后继定义为大于x,且最小的数)...原创 2019-03-22 18:17:56 · 376 阅读 · 0 评论 -
AC自动机——杨子曰算法
AC自动机——杨子曰算法”哦,什么,这个算法可以自动AC题目?“”呵呵,你想多了……“在阅读此文章前,请先确保掌握字典树和KMP算法,你也可以阅读:字典树(trie)——杨子曰算法KMP——杨子曰算法字典树和KMP都是用来处理字符串的问题的,我们用KMP可以解决类似yzy在yzyzyzyblockyzyzy出现了几次的问题,但如果有一天有一个人问你:yz,yzy,bl,yzyb在y...原创 2019-03-21 14:57:13 · 287 阅读 · 0 评论 -
【SPOJ GSS3】Can you answer these queries III(动态区间最大子段和)——杨子曰题目
线段树(六)——杨子曰算法额……线段树我又来了一道题:SPOJ GSS1S POJ GSS1_Can you answer these queries I 给一个长度为n(n&amp;amp;amp;amp;amp;amp;amp;amp;lt;=50000)的序列,再给出m个询问l,r,对于每个询问输出区间[l,r]的子序列最大和...原创 2018-08-08 11:06:24 · 451 阅读 · 0 评论 -
线段树(一)——杨子曰算法
线段树(一)——杨子曰算法来来来,先问一个问题,给一个长度为n(n&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;=200000)的序列,然后是m(m&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;=200000)个询问,对于每个询问x,y,求区间[x,y]的max 噢!!恶心的数据范围,显然是O(m log n)的节奏啊! 没错,我们今天就要用m log n的复杂度来解决这道题原创 2018-04-07 20:30:39 · 794 阅读 · 6 评论 -
线段树(二)——杨子曰算法
线段树(二)——杨子曰算法传送门:线段树(一)这个问题与之前最大的区别就是多了更新,这也就是线段树的优势了,杨子曰:线段树专注于在区间中更新的问题(怎么弄得跟企业的宣传标语一样) 也就是说,我们要在原来那个没有更新的代码的基础上增加一个过程update就行了void update(int l,int r,int k,int v,int nod){ //l,r表示目前线...原创 2020-08-22 17:06:08 · 587 阅读 · 0 评论 -
线段树(三)——杨子曰算法
线段树(三)——杨子曰算法传送门:线段树(一) 传送门:线段树(二)接着上次的问题,我们开始曰今天的内容,这道题与之前拿那道最大的区别就是它更新的内容是——一个区间,哦,瞬间有大佬发话了,这岂不是很简单,就像上次的区间query一样,分三种情况讨论,全在左区间,全在右区间,以及一半在左,一半在右,然后递归下去就完了,但是有一个很大的区别,就是找到的区间和要更新的区间完全吻合时,不能停...原创 2020-08-22 17:06:19 · 575 阅读 · 0 评论 -
线段树(四)——杨子曰算法
线段树(四)——杨子曰算法传送门:线段树(三)欧,现在是线段树模板题的最后一个大BOSS了,也就是更新的是区间,询问的也是区间,看上去很恶心,现在解决它!(我们把add(lazy)和sum记在一个struct,看得清晰)首先,他询问的是区间和,So,最开始肯定要build,不多说:void build(int l,int r,int nod){ tree[nod...原创 2018-04-22 13:46:36 · 380 阅读 · 0 评论 -
线段树(五)——杨子曰算法
线段树(五)——杨子曰算法传送门:线段树(四) 瞎BB:线段树我又来了!给一个长度为n(n&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;=200000)的序列,再给出m个操作,对于每个操作,先给出一个k,如果k=1,则输入x,y,输出区间[x,y]中能被7整除的数的个数,如果k=2,则输入x,y,z,把区间[x,y]的每个元素加上z 对于这道题我们会发现与之前最大的区别是,它的询问内容,好恐怖。我们原创 2018-07-11 11:41:25 · 317 阅读 · 0 评论 -
线段树合集——杨子曰算法
线段树集合——杨子曰算法这里我把我写的五篇线段树汇总一下: 线段树(一):主要讲了线段树是什么鬼,以及怎样query(←想知道它是什么meaning,点进去!) 线段树(二):体现了线段树真正的价值——update(←想知道它是什么meaning,点进去!) 线段树(三):线段树区间更新的优化——lazy(←想知道它是什么meaning,点进去!) 线段树(四):线段树(二)和线段树(...原创 2018-07-12 10:04:22 · 742 阅读 · 2 评论 -
堆排——杨子曰算法
堆排——杨子曰算法没错,它又是一个n log n的算法,有人说:学这么多排序有什么卵用? 杨子曰:装逼堆排是用一个堆来实现的(废话) 我们这里说的堆是小根堆——就是爸爸比儿子要小的堆(听上去好别扭) 堆排的实现要分为两个部分:建堆和拆堆 我们用3,4,6,1,5,2来模拟一下 黑喂狗:1.建堆 我们在建堆是一定要维护爸爸比儿子小,具体怎么实现呢?拿到一个数后不管三七...原创 2018-07-26 12:47:56 · 296 阅读 · 0 评论 -
字典树(trie)——杨子曰数据结构
字典树(trie)——杨子曰算法先扔一道题:HDU - 1251统计难题 就是说给你一堆字符串,再是一堆询问,问你以这个字符串为前缀的字符串有多少个?今天我们来曰一个字符串中常用的数据结构——字典树(高雅的人称之为trie树(读作:踹树)) trie树有一下几个特点: 1.根节点是空的 2.每个节点上都会记录一个字符(除了根节点) 3.从更节点下面出发,往下走路径上记录字符串...原创 2018-08-06 14:41:42 · 340 阅读 · 0 评论