数据结构
文章平均质量分 72
Power_True
这个作者很懒,什么都没留下…
展开
-
【题解】5063. 异或与区间加
题目大意给定序列 an{a_n}an, 每次给出若干操作:将所有 l,r∈[st,en]l,r\in[st,en]l,r∈[st,en] 且 al⊕al+1⊕...ar=ka_l\oplus a_{l+1}\oplus...a_{r}=kal⊕al+1⊕...ar=k 的所有区间区间 +w+w+w (在初始值全为0的 bbb 序列中)。求最终的 bbb 序列。思路这题还是比较恶心的。首先容易想到答案运用差分的方法解决。且 ai⊕ai+1⊕...ar=ka_i \oplus a_{i+1}原创 2022-01-19 07:44:33 · 423 阅读 · 0 评论 -
【题解】3745. Problem A
3745. Problem A题目大意给定一棵树,每条边初始颜色为0。有三个操作:将某条路径上所有边反色;将有且只有一个点在某条路径上的边反色;求一条路径上的黑边个数。总结容易想到重链剖分。我们用线段树维护 sum0sum_0sum0 表示区间内白边个数, sum1sum_1sum1 同理,valvalval 表示连向该点的所有轻边是否反转。先看操作1:在链中跳的时候显然是把每个点的 sum0,sum1sum_0,sum_1sum0,sum1 翻转;在链之间跳时给跳之前链头标原创 2022-01-17 21:41:54 · 239 阅读 · 0 评论 -
【题解&总结】 gmoj 4744 同余
题目大意给定一个长度为 nnn 的序列 {an}\{a_n\}{an} ,有 mmm 个询问,每次给出 l,r,p,ql,r,p,ql,r,p,q ,求区间 [l,r][l,r][l,r] 中有多少个 aia_iai 满足 ai≡q (mod p)a_i\equiv q\ (mod\ p)ai≡q (mod p) 。题解显然题目其实是要求 ai=kp+qa_i=kp+qai=kp+q 个 iii 的个数。我们考虑当 p≤100p\le 100p原创 2021-08-10 20:44:27 · 124 阅读 · 0 评论 -
【GDKOI 2021提高组DAY2】群岛
一道需要动动脑的题,需要把题目转换一下,然后才好维护。Description题解对于ai<ia_i<iai<i 的情况,我们发现iii是一定能到达a[i]a[i]a[i]的。那么说,我们假设把所有的[ai,i][a_i,i][ai,i]当做线段,那么我们每次的查询就是找与[i,n][i,n][i,n] 相交最前的左端点。用线段树维护,支持区间加以及找前缀区间最后一个0的位置。特别的,为了避免把[x,y],[y+1,z][x,y],[y+1,z][x,y],[y+1,z]两原创 2021-01-30 21:43:19 · 411 阅读 · 1 评论 -
【学习笔记】数据结构:无旋Treap(二)区间操作
学了无旋Treap的普通操作后,就学了一下区间的一些操作,然后打了一道极其恶心的题目:[NOI2005]维护数列这里通过这道题来好好讲一讲平衡树的区间操作。First of all首先我们得理解此时的平衡树维护什么,它维护的是每个数下标的大小关系,因此,这棵平衡树的中序遍历就是这个序列。那假如说又要维护值又要维护下标呢?算了吧,好好打树套树。Second好,进入正题,我们来看看这道题用无旋Treap怎么做。首先,我们先看看它的两个核心操作:split和merge。//分裂void spli原创 2021-01-24 15:11:01 · 357 阅读 · 0 评论 -
【学习笔记】数据结构:无旋Treap
最近学习了一下无旋Treap,发现无旋Treap真的太好打了,而且也很好理解,很好用。Treap?什么是Treap?顾名思义:Treap=Tree+heap,即“树堆”,“树”指的是二叉查找树,“堆”就是堆。那二叉查找树跟堆有什么关系呢?当输入的数据十分恶心的时候,普通的二叉查找树的时间复杂度就会由 nlog2nnlog_2nnlog2n 退化到 n2n^2n2 级别,时间复杂度难以让人接受。而我们现在考虑优化,我们可以在每一个节点上多放一个数,然后使得这棵树既满足二叉排序树的性质也满足堆的性原创 2021-01-02 15:07:00 · 1068 阅读 · 0 评论 -
【题解&比赛总结】简单题(easy)
Description小 P 完成了签到之后就开始了比赛,他看了眼第一题,第一题的题意是这样的:KCZ 王国有 NNN 个城市,被 MMM 条双向道路连接。每条双向道路都有一个维修费用。国王 KCZ 想要去掉尽可能多的边,使得留下来的边依旧能使王国的任意两个城市之间都有经过一条或多条边的路径。在所有的方案中,国王 KCZ 希望留下来的边的维修费用之和最小。现在,国王 KCZ 准备调整一些边的维修费用来影响最后留下的边的结果。对于每条边,他希望你告诉他,在保证这条边有希望被留下来的同时,这条边的维修费用最原创 2020-11-28 22:07:25 · 516 阅读 · 0 评论 -
【学习笔记】数据结构:树状数组(二)区间修改
目录前言区间修改单点查询查询修改CodeCodeCode区间修改区间查询查询修改CodeCodeCode总结前言上一次我讲了树状数组的单点修改,这次我打算讲一讲树状数组的区间修改。区间修改单点查询似乎毫无头绪。我们知道,树状数组的思想是前缀和,那我们是不是可以用一下前缀和的逆运算:差分呢?首先我们设 bi=ai−ai−1b_i=a_i-a_{i-1}bi=ai−ai−1 ,那我们看一下:查询我们首先考虑查询。我们要求 aia_iai 那么我们就只用求 ∑j=1ibj\sum_{j原创 2020-09-06 08:13:10 · 596 阅读 · 1 评论 -
【学习笔记】数据结构:树状数组(一)单点修改
目录前言什么是树状数组?一二总结前言平常打线段树是不是打得烦了?代码量长 ,难修改?那就学学树状数组吧!单点修改:树状数组 303030 行,线段树 505050 行区间修改:树状数组 404040 行,线段树 100100100 行看到没有,这就是差距!什么是树状数组?树状数组又名二进制查找树,为什么呢?让我们来看一看吧。(以下图片来自网络)乍一看好像没什么头绪,刚才说了,树状数组又名二进制查找树,把它的编号转成二进制看看?显然:一二设当前编号末尾有 xxx 个0那么总原创 2020-08-27 10:32:57 · 444 阅读 · 0 评论 -
【学习笔记】数据结构:字典树(Trie)
最近遇到了几道有关trie的题目,我就来讲讲,顺便梳理梳理思路。字典树引入什么是字典树?字典树有什么用?举个栗子,我们这里有一堆字符串,我们要在里面找到某个字符串在不在这堆字符串里面,大家想想有什么办法?一个很朴素的方法是 O(n⋅len)O(n·len)O(n⋅len)的时间复杂度去一个个枚举,可是当有多组询问且 nnn,lenlenlen 很大时,就显得有点吃力了,那我们有没有什么其他的办法呢?这就引入了我们的字典树Trie了结构很明显,字典树是一棵树(废话),但是字典树的节点是没有任何原创 2020-08-15 18:44:25 · 241 阅读 · 0 评论