随笔分类 -  数据结构

摘要:洛谷传送门 CF传送门 Solution 这是DP。 对于每一个位置 i ,它所能到的范围是 [i+1,ai] ,所以如果想要走的步数最少并且最远,应该找 [i+1,ai] 中有 max{ak}k 。 这个可以用RMQ解决。 那么对于 \ 阅读全文
posted @ 2020-12-03 11:19 jasony_sam 阅读(77) 评论(0) 推荐(0) 编辑
摘要:洛谷传送门 这个题用到了单调队列的优化,但是精髓绝不止在于此。+_+ Solution 我们先不管字典序怎么办,想想怎么求最小的 ans 首先,因为要的是绝对值,那么考虑将 0 化为 1 ,也就是将没有景点的城市看作会减少一个景点的城市(雾 设 bi 表示城市 \(a 阅读全文
posted @ 2020-11-27 19:39 jasony_sam 阅读(123) 评论(0) 推荐(0) 编辑
摘要:洛谷传送门 CF传送门 Solution 题解里都是暴力的做法,这里也介绍一下。 既然要求找最小的边,那么必然要将 (l,r) 的边从大到小排序,然后将每条边的两个端点尽量分到不同的集合,直到分不了,就可以输出答案了。 时间复杂度:O(mq) 要不是时限 6 秒,就都得没了 但是 阅读全文
posted @ 2020-11-27 19:37 jasony_sam 阅读(179) 评论(0) 推荐(1) 编辑
摘要:洛谷传送门 为什么总有人说这是长链剖分板子题? Solution 题意非常简洁,这让我少了转化题意这一步。 我们考虑什么样的三个点在树上满足两两之间距离 d 相等: 对于某一个点,它的子树内以它为LCA,距它 d 的三个点 对于某一个点,它的 d 级祖先以及子树内两个以它为L 阅读全文
posted @ 2020-10-25 11:30 jasony_sam 阅读(77) 评论(0) 推荐(0) 编辑
摘要:听同机房大佬sky说这是平衡树好题,再加上本蒟蒻刚刚学习平衡树,所以写个题解加深记忆。 Solution 我们看见一操作是移动操作(连个修改都没有),可以想到拿平衡树进行维护整个序列,这是很显然的。 然后看二操作,询问区间某个数的出现次数。 好像我所学过的平衡树是没有这种技能的(可能是我太菜没听说) 阅读全文
posted @ 2020-10-14 21:40 jasony_sam 阅读(281) 评论(0) 推荐(0) 编辑
摘要:Solution ​ 因为要求路径上的字符重新排序后为回文串,也就是说出现次数为奇数的字符不会超过一个。我们给每个字符一个 2x 形式的权值,那么合法路径异或和要么为 0 ,要么为 2x 的形式。 ​ 设点 x 到根的异或和为 Dx ,由于是边权,x和y路径上的异或和可 阅读全文
posted @ 2020-09-08 18:34 jasony_sam 阅读(118) 评论(0) 推荐(0) 编辑
摘要:二维树状数组及(不会用到的)三维树状数组 前置芝士 一维树状数组(lowbit) 二维树状数组 二维树状数组涉及到两种基本操作,修改矩阵中的一个点,查询子矩阵的和 首先是修改点的操作: void update(int x,int y,int z){ //坐标为(x,y)的点增加z for(int i 阅读全文
posted @ 2020-07-19 14:04 jasony_sam 阅读(176) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2020-07-19 14:03 jasony_sam 阅读(6) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2020-07-19 14:02 jasony_sam 阅读(6) 评论(1) 推荐(0) 编辑
摘要:树链剖分 前置芝士 ​ 就像它的名字,树链剖分是在一棵树上进行,在讲解中还会用到线段树和dfs,如果不会,打开链接自行搜索(主要是线段树的博客没做,还有不要问我为什么这算知识)。 一个节点的重儿子,为其更大的一颗子树的根节点。从这个点连向重儿子的边我们称为重边。 由重边连续连起来的点和边就组成了重链 阅读全文
posted @ 2020-07-19 13:58 jasony_sam 阅读(165) 评论(0) 推荐(0) 编辑
摘要:启发式合并 概念 启发式算法是基于人类的经验和直观感觉,对一些算法的优化。 作用 可以启发式合并更加高级的数据结构,如 heap, set, splays 等 复杂度计算 每次把个数少的合并到个数多的?复杂度 O(min(m1,m2)) 可是我们注意到,每次合并后个数为合并前少的部分 阅读全文
posted @ 2020-07-19 13:57 jasony_sam 阅读(182) 评论(0) 推荐(0) 编辑
摘要:线段树合并 前置芝士 动态开点线段树和权值线段树 乍一看,线段树合并和上面那两个奇怪的东西有什么关系。 其实,线段树合并的全称为动态开点权值线段树合并( 雾 如果对上面那两个奇怪的东西不理解可点开链接进行搜索(大雾 优点 ​ 动态开点线段树有着一些优点,比如说当你让某个节点继承另一个节点的左儿子或者 阅读全文
posted @ 2020-07-19 13:56 jasony_sam 阅读(183) 评论(0) 推荐(0) 编辑
摘要:动态开点线段树 前置芝士 众所周知,普通线段树空间复杂度是 O(n4) 所以当n很大的时候,如果正常的去建一颗线段树,开4倍n空间显然会炸内存 怎么办呢? 这个时候,动态开点线段树出现了。 概念 ​ 动态开点线段树是一类特殊的线段树,与普通的线段树不同的是,每一个节点的左右儿子不是该点编号 阅读全文
posted @ 2020-07-19 13:54 jasony_sam 阅读(1717) 评论(2) 推荐(3) 编辑
摘要:权值线段树 前置芝士 ​ 顾名思义,权值线段树也算是一种线段树,它的本质也是线段树。所以在学习权值线段树之前,如果对普通线段树的掌握不太熟,可以先去这里去搜索线段树进行学习。 ​ 而权值线段树的进一步本质则是用线段树维护桶。同理,如果不知道桶是什么可以到这里进行搜索。 概念 ​ 我们知道,普通线段树 阅读全文
posted @ 2020-07-19 13:53 jasony_sam 阅读(203) 评论(3) 推荐(1) 编辑
摘要:本人太懒,一个链接足已 前人之树好乘凉 优化队列 阅读全文
posted @ 2020-07-09 21:47 jasony_sam 阅读(441) 评论(1) 推荐(0) 编辑

点击右上角即可分享
微信分享提示