随笔分类 -  数据结构

摘要:线段树题解qwq 这道题其实把式子一推就行了。因为要求前缀和的前缀和,那为什么我们不维护前缀和,然后求前缀和呢?对于维护前缀和,我们只需要两种操作:区间修改,区间查询。 区间查询是查询前缀和的前缀和嘛,这个是区间操作没问题,但为什么是区间修改?题目不是单点修改吗?我们先推一下式子: 原数列: \(x 阅读全文
posted @ 2020-08-07 10:39 草鱼泡酒 阅读(167) 评论(0) 推荐(0)
摘要:这道题其实就是一个带权并查集的基础题,维护的是点权,所以我们要维护两个数组dis:表示当前点到父亲节点的距离,size:当前子树的大小。那么程序就自然出来了: 代码: #include <bits/stdc++.h> using namespace std; int T; int fa[30010] 阅读全文
posted @ 2020-06-18 10:45 草鱼泡酒 阅读(105) 评论(0) 推荐(0)
摘要:爱死替罪羊树了 这种暴力的数据结构爱死了。什么?!你还不知道替罪羊树?那就看看这篇博客这篇博客吧。替罪羊树就是当不平衡时,拍扁重建,然后就平衡了。想切这道题,要先把普通平衡树那道题做了(这篇博客讲了的哦),然后就会发现,只要改一下以前的程序就可以了。这里我就着重讲下主函数怎么建树那里。 建树方法: 阅读全文
posted @ 2020-06-16 16:32 草鱼泡酒 阅读(205) 评论(0) 推荐(2)
摘要:前言: 教练讲旋转的时候摸鱼去了,然后就不会旋转操作了T_T,那怎么办呢,要做题的啊,诶,替罪羊树好像是不用旋转的诶qwq,就它了。 替罪羊树这样直接讲不直观,还是看题来讲吧。 上题:洛谷 P3369 【模板】普通平衡树 概念/思想 替罪羊树属于平衡树的一种,但是他维护平衡的方式不是复杂的旋转,而是 阅读全文
posted @ 2020-06-15 17:10 草鱼泡酒 阅读(220) 评论(2) 推荐(3)
摘要:概念: 堆就是一颗二叉树,满足父亲节点总是比儿子节点大(小)。因此,堆也分为大根堆和小根堆,大根堆就是父亲节点比儿子节点大,小根堆正好相反。注意加粗的地方,是每一个节点哦!!!!! 还是直接看例题吧,这样讲起来更加生动。 上题:【模板】堆 解析: 这道题明显就是一个小根堆,那,怎么实现呢?热爱数组的 阅读全文
posted @ 2020-06-13 16:09 草鱼泡酒 阅读(141) 评论(0) 推荐(1)
摘要:这道题也当做二叉搜索树的建树模板。 这道题其实直接把这颗树建出来后,比较前序序列和中序序列即可,这里我用的数组实现,更好写和查错qwq。 code: #include <bits/stdc++.h> using namespace std; int n , len; string a , b , c 阅读全文
posted @ 2020-06-12 10:59 草鱼泡酒 阅读(152) 评论(0) 推荐(0)
摘要:直接进入正题: 分块: 分块分块,就是把一个长串东西,分为许多块,这样,我们就可以在操作一个区间的时候,对于在区间里面完整的块,直接操作块,不完整的直接操作即可,因为不完整,再加上一个块本身就不大,复杂度会很小的,然后需要输出的时候,单点输出直接把本来自身的值加上对块的操作加起来即可,而对于区间询问 阅读全文
posted @ 2020-06-12 10:39 草鱼泡酒 阅读(178) 评论(0) 推荐(1)
摘要:并查集就是一个可以连通一块东西的工具。 基础: 这么理解吧,有一堆亲戚,每次给你两个人,告诉你他们是亲戚,最后任意给你两个人,问他们是不是亲戚。 这个时候,并查集就大显神通了。我们可以每次输入两个数,如果这两个数不在一块,把这两个数连接起来,到了最后,不就是变成了一棵树了吗?最后查询时,每次看他们是 阅读全文
posted @ 2020-06-11 19:01 草鱼泡酒 阅读(142) 评论(0) 推荐(2)
摘要:啊学完了来写个总结吧 概念解释: 顾名思义,单调,就是指色彩单一某一个容器里面的元素都是递增或递减的,而单调栈和单调队列就是这个容器。 单调栈: 单调栈模板 其他的我就不说了,讲下为什么单调栈是从后往前扫描: 当我们在判断一个数后面第一个比它大的数时,前提是后面的数已经被处理了,所以我们要从后往前扫 阅读全文
posted @ 2020-06-10 13:26 草鱼泡酒 阅读(127) 评论(0) 推荐(0)
摘要:二分 思路: 这道题思路还是蛮好想的,一开始想的是暴力枚举w,然后再仔细一看,w增长时,y肯定减小,那么思路出来了: 二分 但是在时二分时,分得是左右端点lr,做错了 求出w的上下界,然后二分 只二分是肯定不行的因为这是道蓝题呀我们在求出对应的yi时,用了n^2的时间复杂度,如何优化?要用到 前缀和 阅读全文
posted @ 2020-06-08 21:03 草鱼泡酒 阅读(87) 评论(0) 推荐(0)
摘要:又是大模拟淦淦淦淦淦淦淦 思路: 这道题我居然用的队列orz。 言归正传,这道题就是模拟计算器。从读题目样例可以发现,数字的个数只比符号的个数多一个,那么这就给我们了思路:用队列,先提前放出一个数,每弹出一个字符,就处理两个数。 实现: 分三步 1.先把这输入的那一串序列分成两段,一段全是数字,一段 阅读全文
posted @ 2020-06-05 13:19 草鱼泡酒 阅读(177) 评论(0) 推荐(1)
摘要:这道题我一开始看到的时候,想到的是拓补排序,可是这么菜又这么懒的我怎么可能用呢,既然出现在优先队列里面,那么久一定和他有关了 可是并没有使用优先队列 思路: 对于这道题,我们肯定是对他们定义优先级,然后进行排序了,最后输出。思路还是挺好想der。 实现: 首先肯定是一行行的先处理数据啦。咋处理?你不 阅读全文
posted @ 2020-06-05 10:03 草鱼泡酒 阅读(137) 评论(0) 推荐(1)