随笔分类 - 数据结构
发表于 2022-11-03 20:37阅读:206评论:0推荐:0
摘要:题目描述: 给定一个带权树,树上任意两点间的路径权值 定义为 这两个点之间路径上的最小值,树上任意一点 的权值定义为这个点到树上其他所有点的路径权值和,即 ,现求树上每一个点的路径权值和。 I
阅读全文 »
发表于 2022-10-14 20:24阅读:139评论:0推荐:2
发表于 2022-10-11 20:31阅读:43评论:0推荐:0
摘要:有趣的游戏 题目描述 游戏在一棵大小为 的树上进行。其中每个点都有点权,第 个点的点权为 。 每一次系统会给出一条链,小 A 可以从这条链上找出两个点权不同的点 ,他的得分是 。然后小 B 会从整棵树中选取两个小 A 没有选过的点,计分
阅读全文 »
发表于 2022-10-10 15:50阅读:20评论:0推荐:0
摘要:Little Girl and Problem on Trees 题意: 给定一棵无边权的树,除了根节点以外的节点度数不超过 ,有两种操作 (0 v x d)将距离 节点 距离之内的节点的值加上 (1 v)询问 节点的值 ,$q\le
阅读全文 »
发表于 2022-09-29 10:53阅读:38评论:0推荐:0
发表于 2022-09-28 11:13阅读:36评论:0推荐:0
摘要:Yazid的新生舞会 题目描述 Yazid 有一个长度为 的序列 ,下标从 至 。显然地,这个序列共有 个子区间。 对于任意一个子区间 ,如果该子区间内的众数在该子区间的出现次数严格大于 $\fr
阅读全文 »
发表于 2022-09-27 00:06阅读:64评论:0推荐:0
发表于 2022-09-16 16:36阅读:16评论:0推荐:0
摘要:题目链接 题意:实现三种操作将加入集合中,从集合中删去,查询集合中所有的树在异或之后有多少个数小于. 思路:看到跟异或的统计数字问题,所以考虑用树来实现这些操作,将加入到集合或从集合中删除,就是很正常的树的操作,将每一个
阅读全文 »
发表于 2022-09-08 17:52阅读:38评论:0推荐:0
摘要:题目链接 思路:因为所有点的权值是互不相同的,并且概率,也就是所有的点都会被选到。所以用来表示节点权值为的概率。首先考虑叶子节点,叶子节点都没有子节点所以他们的权值是确定的,;再考虑只有一个子节点的
阅读全文 »
发表于 2022-08-31 19:29阅读:19评论:0推荐:0
摘要:题目链接 如果抛开换根的操作话,就是一个很简单的树链剖分的模板题。但是加了换根之后就边的复杂了起来。首先我们知道,肯定不能每一次换根之后都重新将树剖分一次,所以我们需要去找到换根之后的和我们要去查询的节点之间的关系。 一个很不错的博客 首先来考虑一下如果换根之后,我们要查询的节点刚
阅读全文 »
发表于 2022-08-31 19:12阅读:20评论:0推荐:0
摘要:题目链接 题目大意就是要我们对一个区间执行区间翻转和整体移动区间的操作。 思路:将一个区间分裂出来再移动到另一个节点的后面,可以用来将这一个子树从原树中分裂出来然后再合并到后面去,同时区间反转操作也可以通过打标记的方式来确定这个区间要不要翻转,反转的时候只用将左右子树交换一下位
阅读全文 »
发表于 2022-08-31 19:04阅读:23评论:0推荐:0
摘要:题目链接 需要实现区间覆盖,区间01取反,区间求和以及区间查询最大连续段。区间覆盖很好实现,区间取反只需要用分别统计个数的时候将他俩交换就可以了,区间求和在取反之后只需要就可以求出来了。重点就是区间最大连续子段,分成三类: 左区间全满且跨越到右区间 $2
阅读全文 »
发表于 2022-08-31 18:49阅读:15评论:0推荐:0
摘要:题目链接 主要要实现区间覆盖和区间查询不同数,看见区间赋值操作可能会想到来实现,区间查询不同数直接另外开一个数组记录一下就好了,但很可惜了,代码如下: struct ODT { struct Node { i64 l, r; mutable i64 v; Node (i64 l,
阅读全文 »
发表于 2022-08-28 20:50阅读:36评论:0推荐:0
发表于 2022-08-12 21:28阅读:20评论:0推荐:0
发表于 2022-08-12 15:07阅读:47评论:0推荐:0
摘要:题目链接 思路: 实现两个操作,区间加法和查询区间第k大。考虑分块的做法,区间加法对整块来说可以直接另开一个数组来对整块进行区间加法,对于零散块就直接暴力的加上。 区间加法 void update(int l, int r, i64 x) { if (belong[l] == belong
阅读全文 »
发表于 2022-08-12 11:33阅读:43评论:0推荐:0
摘要:众所周知,是一位实力强劲的算法竞赛选手,擅长各种各样的算法,一切问题对于 来说都游刃有余。这一天发现了一个有趣的题目,题目的内容是这样的: 有个算法,每次选择一个区间,学习这个区间里的所有算法,但是每个算法只能学习一
阅读全文 »
发表于 2022-08-05 12:08阅读:54评论:0推荐:0
摘要:珂朵莉树() 0x01 珂朵莉树可以解决什么问题 对于涉及区间推平操作的问题,就是把区间内的所有数字变成相同的一个数。如果数据是随机的就可以使用珂朵莉树。 0x02 珂朵莉树的基本原理 比如一开始把一个区间分成这些部分,那么我们就可以用一个结构体将相邻的数字存起来,分别记录
阅读全文 »
发表于 2022-07-29 22:44阅读:62评论:0推荐:0
摘要:题目链接 读题可以发现,我们要实现区间整体变成,和区间内非的位置建上一颗树。那么这个时候我们看到有区间推平操作就可以想到神奇的珂朵莉树(),那么这个时候我们就要考虑将树木和树苗区分开,我们可以假定树苗是,树木的值是。那么在砍树的时候直接推平整个区间,但是在推平的过程
阅读全文 »
发表于 2022-06-27 21:24阅读:27评论:0推荐:0
摘要:题意:给我们一个序列,表示第个人想要在人前面获得糖果,不然就会获得不满意度。要我们求出来这个序列中的最小不满意度是多少。 思路:因为这个题假设每一个人入度都为的话,它整体就是一个环,所以现在去考虑序列中存在入度为的点。我们考虑用来存储边得关系 #include
阅读全文 »