数据结构
文章平均质量分 72
forever_shi
但行好事,莫问前程;行你所行,无问西东!
展开
-
洛谷4198 楼房重建 线段树
题目链接题意:你有nnn个位置可以建楼,位置编号为111到nnn,一开始所有位置都没有楼。每个位置的楼都可以看作一条垂直x轴的线段,我们从原点观察,当一栋楼上有一个点与原点连线上没有和其他楼的交点(交点是线段端点也不行)。有mmm次操作,每次可以让一个位置的楼高度发生变化,可能高了也可能矮了。问你每次操作后从原点能看到多少栋楼。n,m<=1e5n,m<=1e5n,m<=1e5题解:可以发现一栋楼能被看到只要楼顶的那个端点能被看到即可。这是一个比较显然的事情,也比较符合生活。那么这个原创 2021-08-24 16:31:20 · 267 阅读 · 0 评论 -
洛谷4097 HEOI2013 Segment 李超树
题目链接题意:有nnn次操作,每次操作可能有两种,第一种是插入一条线段,告诉你线段的两个端点,其中1<=x<=399901<=x<=399901<=x<=39990,1<=y<=1e91<=y<=1e91<=y<=1e9,保证端点都是整数。第二种操作是询问与x=kx=kx=k这条直线相交的所有线段的kkk这个横坐标下的纵坐标的最大值。强制在线。n<=1e5n<=1e5n<=1e5。如果有多个线段,输出编号最小的。题原创 2021-08-19 17:35:49 · 155 阅读 · 0 评论 -
李超线段树学习笔记
前言:其实我很早就听说过李超树了,之前也有好多次想学这个东西,但是都因为各种原因没有学习。现在终于抽出了点时间学习了这个数据结构。进入正题。首先是李超树能解决什么问题。可以理解为,现在有一个二维坐标系,横坐标是正整数。李超树可以解决给一个区间加入一条斜率不一定是0的线段,询问一个所有覆盖这个横坐标的线段的最大或最小值。或者在一个横坐标区间中的所有线段的最大或最小值(可能只有部分在区间内)。下面介绍一下怎么维护。这里顺带了一个正确性证明。我看网上似乎很少有人证明李超树的正确性。我自己想了一下,觉得不是原创 2021-08-19 17:28:51 · 318 阅读 · 0 评论 -
洛谷3722 AH2017/HNOI2017 影魔 线段树 单调栈
题目链接题意:你有一个长度为nnn的排列,对于一对下标i,j(i<j)i,j(i<j)i,j(i<j),如果它们之间没有比aia_iai和aja_jaj大的数字,那么贡献为p1p_1p1,如果存在一个位置kkk,满足ai<ak<aja_i<a_k<a_jai<ak<aj或aj<ak<aia_j<a_k<a_iaj<ak<ai,则贡献为p2p_2p2,其他情况没有贡献。有mmm次询问,每次询问给你原创 2021-08-12 20:34:09 · 157 阅读 · 0 评论 -
洛谷3165 CQOI2014 排序机械臂 splay
题目链接题意:给你一个长度为nnn的序列,现在有一种对序列排序的方法:假设当前最小的前iii个已经找到了,我们找到i+1i+1i+1到nnn里面最早出现的最小值,设其出现位置为jjj,我们将区间[i+1,j][i+1,j][i+1,j]翻转来排序。输出每次翻转前要找的最小值的位置。n<=1e5n<=1e5n<=1e5题解:首先先吐槽一下,最近可能我实在是太蠢了,这个题硬是写了一天半。网上题解看了不少,都没看懂,感觉好像他们建的平衡树的下标含义和我似乎都不一样。于是最后还是自己yy原创 2021-07-21 14:58:49 · 161 阅读 · 0 评论 -
洛谷1110 ZJOI2007 报表统计 multiset 堆
题目链接题意:有一个长度为nnn的序列,有mmm次操作,有三种操作:第一种是在原序列第iii个位置的后面插入一个数,如果已经插入过了,那么插在第iii个位置之前插入的最后一个的后面,新插入的后一个为原序列第i+1i+1i+1个数。第二种操作是询问已有数字相邻的两两之间差绝对值的最小值。第三种操作是询问已有数字中任意两数之差绝对值的最小值。n,m<=5e5n,m<=5e5n,m<=5e5题解:本来想找点平衡树的题目的,于是找到了这个题。但是发现可以直接STL做了。使用两个mult原创 2021-07-20 09:38:11 · 128 阅读 · 0 评论 -
CF1428F Fruit Sequences 线段树
题目链接题意:给一个长度为nnn的010101串,问你对于所有区间[l,r][l,r][l,r],区间中最长连续111的长度之和。n<=5e5n<=5e5n<=5e5题解:先来吐槽两句。这题当场和舍友一起打的,但是他们去写题了,我只是在边上看题口胡。结果这题我和舍友一起口胡了一个假做法之后就没管。结果寒假训练时阴差阳错又有人搬了这个题,结果一写发现之前做法假了,然后自己又连想好几个假做法。感觉这种可能可行的打开方式比较多的题还是经常找不准打开方式QAQ回归正题,说做法。打开方式是原创 2021-01-25 14:50:59 · 153 阅读 · 1 评论 -
CF1254D Tree Queries 树链剖分 期望
题目链接题意:给你一棵nnn个点的无根树,一开始每个点的权值都是000。有qqq次操作,操作有两种类型。第一种是给你一个点的标号xxx和一个数ddd,在树上随机选一个点,让树上所有到这个随机选出的点必须经过xxx的点权值都加ddd。第二种操作是询问一个点xxx点权的期望。n,q<=150000n,q<=150000n,q<=150000题解:听说这题复杂度不同的题解就有四五种,这里用一种复杂度应该是最优秀的做法。首先还是先分析这个期望。修改时给定一个xxx,对于随机的一个点vv原创 2021-01-15 21:01:39 · 221 阅读 · 0 评论 -
SDOI2018 原题识别 洛谷4618 主席树 莫队 (无代码)
题目链接题意:有一棵nnn个点的无根树,每个点有一个点权。有mmm次询问,每次询问有两种,第一种是给你树上两个点x,yx,yx,y,询问这条路径上不同颜色的个数;第二种是给你树上两个点x,yx,yx,y,询问这条链上任取两点形成的子链不同的权值的点的个数之和。这个题还有一个特别之处,就是他会先给你一条链,然后其他点是随机插入到已有的树上的。n<=1e5,m<=2e5,10sn<=1e5,m<=2e5,10sn<=1e5,m<=2e5,10s题解:我高一时二轮当原创 2020-11-08 19:47:48 · 158 阅读 · 0 评论 -
CF617E XOR and Favorite Number 莫队 前缀和
题目链接题意:给你一个大小为nnn的序列,然后给你一个数字kkk,再给出mmm组询问,询问给出一个区间,问这个区间里面有多少个区间的异或结果为kkk。n,m<=1e5,k<=1e6n,m<=1e5,k<=1e6n,m<=1e5,k<=1e6。题解:这种异或和的题经常是考虑先求异或前缀和。这样的好处是区间的异或值可以通过两个前...原创 2019-03-25 14:01:03 · 177 阅读 · 0 评论 -
洛谷4755 Beautiful Pair 分治 主席树 离散化
题目链接题意:给你一个长度为nnn的序列,问存在多少对(i,j)(i,j)(i,j),满足ai∗aj<=max{ai,ai+1...aj}a_i*a_j<=max\{a_i,a_{i+1}...a_{j}\}ai∗aj<=max{ai,ai+1...aj}。也就是有多少个位置对满足序列上的值的乘积小于等于区间最大值。n<=1e5n&am...原创 2019-03-24 19:20:19 · 207 阅读 · 0 评论 -
SPOJ16580 BZOJ3639 QTREE7 - Query on a tree VII LCT
题目链接题意:给你一个nnn个点的树,每个点有点权和一个颜色,颜色是黑白之一。有mmm次操作,每次有三种可能的操作,第一种是修改一个点的颜色,第二种是修改一个点的权值,第三个是给你一个xxx,问所有到xxx路径上颜色全相同点的最大权值。n,m<=1e5n,m<=1e5n,m<=1e5。题解:和QTREE6差不多,但是这次是维护子树最大值。我们在之前的思路上...原创 2019-03-21 11:09:10 · 170 阅读 · 0 评论 -
SPOJ16549 BZOJ3637 QTREE6 - Query on a tree VI LCT
题目链接题意:给你一棵nnn个点的树,每个点有一个颜色,是黑色或者白色,一开始所有的点都是白色。有mmm次操作,有两种操作,第一种是把一个点的颜色黑白翻转,第二种操作是给你一个xxx,询问有多少个uuu满足到xxx的路径上的所有点颜色都相同,也就是问xxx所在的同色连通块的大小。n,m<=1e5n,m<=1e5n,m<=1e5。题解:又不会,抄了y_imm...转载 2019-03-21 08:14:24 · 171 阅读 · 0 评论 -
BZOJ4025 二分图 LCT
题目链接题意:给你一张图,有nnn个点和mmm条边,每条边有一个出现时间和消失时间,让你判断每一个时刻图是否是二分图。n<=1e5,m<=2e5,时刻权值<=1e5n<=1e5,m<=2e5,时刻权值<=1e5n<=1e5,m<=2e5,时刻权值<=1e5。题解:动态图问题一般还是考虑用L...原创 2019-03-20 11:30:21 · 194 阅读 · 0 评论 -
洛谷4309 BZOJ3173 TJOI2013 最长上升子序列 平衡树 dp 线段树
题目链接题意:你有nnn个数,每个数会插到一个位置,告诉你每个插到数列后的位置,问你每一个数插完之后的最长上升子序列长度。n<=1e5n<=1e5n<=1e5。题解:带插入的最长上升子序列,由于不是强制在线,于是我搞了个离线做法。我的做法是先用一个平衡树来维护出插入后序列每个位置的数值,然后用一个nlogn的dp来算每个数插入后以某个这个位置的数为结尾的...原创 2019-03-19 21:55:20 · 170 阅读 · 0 评论 -
BZOJ4777 七彩树 线段树合并
题目链接题意:给你一个nnn个点的树,每个点有一个范围是1−n1-n1−n的权值,可能会有重复。每次问你一个点的子树内与它深度差不超过xxx的所有点(包括本身)中出现了多少种不同的权值。强制在线。题解:感觉一看就很线段树合并,因为如果没有不同权值的限制,只问一个点子树内与它深度差不超过xxx的点的个数,就是一个经典的线段树合并的题了。但是现在的问题是他问的是不同的权值个数,这个权值应该怎...原创 2019-03-07 19:47:06 · 215 阅读 · 0 评论 -
洛谷4770 BZOJ5417 NOI2018 你的名字 SAM 线段树合并
题目链接题意:给你一个字符串,有若干次询问,每次询问给你一个串和一对(l,r)(l,r)(l,r),问你询问串有多少个本质不同的子串没有在原串[l,r][l,r][l,r]区间内出现过。总询问串长&lt;=1e6&lt;=1e6<=1e6,单个串和原串长&lt;=5e5&lt;=5e5<=5e5题解:好像我NOI网上同步赛这个题爆零了,现在再来做...原创 2019-02-27 11:30:01 · 241 阅读 · 0 评论 -
洛谷5212 BZOJ2555 SubString SAM LCT
题目链接题意:给出一个字符串,有两种操作,第一个是在当前字符串后面加上一个字符串,另一个是询问一个字符串在当前字符串中出现了多少次。总长度差不多是1e61e61e6级别的。题意:如果只有询问,求一个串在原串出现的次数的话,我们就只需要在SAM上走到询问串末尾在SAM上对应的点,然后查询parent树上子树内的结束点的个数就可以了。假如这个时候SAM上的每一个点在parent树上的子树结束点...原创 2019-02-26 19:21:37 · 162 阅读 · 0 评论 -
BZOJ3881 [Coci2015]Divljak AC自动机 树状数组 倍增LCA
题目链接由于是BZOJ的权限题,于是放的是darkbzoj的链接。题意:你有一个由nnn个字符串组成的集合SSS,然后有qqq次操作。每次操作会在另一个集合TTT中加入一个字符串,或者询问某一个在SSS中的串在TTT集合的所有串中的多少个中出现过。n,q&lt;=1e5n,q&lt;=1e5n,q<=1e5,总串长&lt;=2e6&lt;=2e6<...原创 2019-02-20 21:29:02 · 199 阅读 · 0 评论 -
洛谷4384 BZOJ5253 2018八省联考 制胡窜 SAM 倍增 线段树合并
题目链接题意:给你一个长度为nnn的字符串,有mmm次询问,每次询问给出一对(l,r)(l,r)(l,r),问你有多少种把序列划分成三段的方法,使得S1...i,Si+1...j−1,Sj...nS_{1...i},S_{i+1...j-1},S_{j...n}S1...i,Si+1...j−1,Sj...n三段中至少有一点包含子串Sl...rS_{l...r}Sl...r,对于每一次...原创 2019-02-26 09:41:58 · 255 阅读 · 0 评论 -
洛谷4696 BZOJ2384 CEOI2011 matching KMP 树状数组 离散化
题目链接题意:给你一个长度为nnn的排列ppp,再给你一个长度为mmm的排列hhh。对于一个序列和一个排列,我们定义这个序列能匹配这个排列的条件是,长度相同,并且序列里的元素互不相同,并且将这个排列排序后大小关系与排列的值相同。也就是说,如果排列是p1,p2...pnp_1,p_2...p_np1,p2...pn,那么对hhh排序后应为hp1,hp2...hpnh_{p_1},h_{p_...原创 2019-02-20 15:00:53 · 312 阅读 · 0 评论 -
BZOJ2905 背单词 AC自动机 线段树
题目链接由于是权限题,我没有权限号,就挂了一个darkbzoj的链接。题意:给你nnn个字符串,每个串有一个价值,你要从中选出一个价值和最大的子序列,使得前面的串是后面串的子串。数据组数&lt;=10,总串长&lt;=3e5,单个串长&lt;=2e4数据组数&lt;=10,总串长&lt;=3e5,单个串长&lt;=2e4数据组数<=10,...原创 2019-02-19 16:53:25 · 342 阅读 · 0 评论 -
洛谷2414 BZOJ2434 NOI2011 阿狸的打字机 AC自动机 树状数组
题目链接题意:给你一个读入串,其中包含多个字符串。字符集是小写字母,如果读到B,表示当前串删除上一个字母,如果读到P,表示当前串形成了一个新串,但是原来的的字符串并不消失,会继续成为下一个串的前缀。我们给每个串按产生的顺序标上序号,每次会给出两个询问串的标号,问第x个串在第y个串中出现了多少次。总串长<=1e5,询问次数<=1e5。题解:是一个我觉得写起来有点麻烦的题。首先问...原创 2019-02-13 19:26:29 · 211 阅读 · 0 评论 -
CF86D Powerful array 莫队
题目链接题意:题意:给出一个nnn个数组成的数列aaa,有ttt次询问,每次询问为一个[l,r][l,r][l,r]的区间,求区间内每种数字出现次数的平方×数字的值的和。n,t<=2e5,ai<=1e6n,t<=2e5,a_i<=1e6n,t<=2e5,ai<=1e6。题解:就是个莫队裸题吧。开个桶记录当前每个数出现的次...原创 2019-03-25 14:39:07 · 240 阅读 · 0 评论 -
LOJ6278 数列分块入门 2 分块 排序 二分
题目链接题意:给出一个长为nnn的数列,以及nnn个操作,操作涉及区间加法,询问区间内小于某个值xxx的元素个数。题解:感觉要是树形数据结构的话可能要维护一个能区间加的主席树,我现在不会,不知道能不能做。树形数据结构不好做考虑更暴力的分块。(人家都告诉你是分块题了啊)。分块的话,整块的肯定是打标记,两侧零散的肯定是暴力修改。但是这个要询问小于某个值的个数,那么还要维护出一个顺序来。我们的...原创 2019-03-25 14:51:25 · 265 阅读 · 0 评论 -
洛谷3348 BZOJ4573 ZJOI2016 大森林 LCT 构造
题目链接题意:给你一个nnn个点的森林,起初每棵树都只有一个点,这个点是生长节点,长出的儿子会接在生长节点上。有mmm次操作。要支持以下操作:第一个操作是让一个区间的树的生长节点全长出一个儿子,儿子的编号是这个位置的点现在的数量。第二个操作是让一个区间的生长节点都变成某一个点。第三个操作是询问第xxx棵树上点uuu到点uuu的距离。n<=1e5,m<=2e5n&am...原创 2019-04-28 13:23:23 · 265 阅读 · 0 评论 -
CF453E Little Pony and Lord Tirek 主席树 set
题目链接题意:你有nnn个东西,每个东西一开始有一个值,每个东西每一秒它的值会增加一个固定的量(可能是000),并且每个东西有一个上限,它的值增长到上限就不再增长。你有mmm次询问,每次在某一个时刻询问一个区间[l,r][l,r][l,r]的所有东西的值之和,并且在询问结束时将这个区间内的所有数清零。保证询问的时刻是单调递增的。n,m<=1e5n,m<=1e5n,m...原创 2019-05-01 21:50:01 · 329 阅读 · 0 评论 -
洛谷5283 十二省联考2019 异或粽子 可持久化trie 堆 贪心
题目链接题意:给你一个长度为nnn的序列,一个区间的权值为区间的异或和。给你一个kkk,问你所有的区间中权值前kkk大的权值和。n<=2e5,k<=min(n(n−1)2,2e5)n<=2e5,k<=min(\frac{n(n-1)}{2},2e5)n<=2e5,k<=min(2n(n−1),2e5)。题解:送我退役的题...原创 2019-04-09 18:32:32 · 1309 阅读 · 0 评论 -
洛谷2048 BZOJ2006 NOI2010 超级钢琴 线段树 堆 贪心
题目链接题意:给你一个长度为nnn的序列,一个区间的权值是区间内的权值和,你要选择kkk个不相同长度在[l,r][l,r][l,r]的区间,使得这kkk个区间总权值和最大。n,k<=5e5n,k<=5e5n,k<=5e5。题解:算是送我退役的题吧。如果一轮省选之前我做了这个题,可能结果就会不一样了吧,可惜没有如果。显然是找长度在[l,r][l,r][l,...原创 2019-04-09 08:58:33 · 358 阅读 · 0 评论 -
CF150E Freezing with Style 点分治 二分答案 单调队列 排序
题目链接题意:给你一棵nnn个点,边有边权的无根树,给你一个lll和一个rrr,让你求一条经过的边数在[l,r][l,r][l,r]之间的路径,使得将路径上所有边按照权值排名,排名在的中间的权值尽可能大,输出路径的两个端点。这里与数学上的中位数是有区别的,要求如果边数是奇数,那么就是数学上的中位数,如果是偶数,那么是排名在中间的相邻两个数较大的那一个,而不是平均值。n<=1e5n...原创 2019-04-03 08:57:08 · 302 阅读 · 0 评论 -
洛谷1552 BZOJ2809 APIO2012 派遣 左偏树
题目链接题意:给你一棵nnn个点的有根树,每个点有两个权值。给你一个mmm,你要在这nnn个点中选出一个点,使得从子树中任意选出若干个点(不一定要选根,也不一定要连通),这些点的第一类权值之和不超过mmm,要让用这些点的个数乘选出的子树的根节点的第二类权值的积最大,求这个最大乘积。n<=1e5n<=1e5n<=1e5。题解:这个题有很多做法,显然是可以线段...原创 2019-04-08 10:20:59 · 155 阅读 · 0 评论 -
BZOJ3331 BeiJing2013 压力 树上差分 圆方树
题目链接题意:你有一个nnn个点mmm条边的无向连通图,有qqq次操作,每次给出两个点x,yx,yx,y,xxx到yyy的路径上必须经过的点的权值加一,问你最后每一个点的权值。n,m,q<=2e5n,m,q<=2e5n,m,q<=2e5。题解:无向图上路径问题还是转成圆方树上路径问题来搞。然后这个题比较简单,思考一下就会发现其实就是圆方树的路径上的圆点个数...原创 2019-03-28 21:10:39 · 255 阅读 · 0 评论 -
洛谷5290 十二省联考2019 春节十二响 贪心 multiset/堆 启发式合并
题目链接题意:给你一棵nnn个点的有根树,根是111号节点,每个节点有一个权值,你要把所有点划分成若干个集合,每个集合中的点在树上不能有父子关系,每个集合的权值是所有集合中的点权值最大的那个。问所有集合的最小权值和是多少。n<=2e5n<=2e5n<=2e5。题解:送我退役的第三道题。感觉除了一些复杂度完全没法优化的暴力之外,基本都是要基于一些贪心的思想...原创 2019-04-11 08:03:45 · 370 阅读 · 0 评论 -
CF1111E Tree 虚树 dp
题目链接题意:给一棵nnn个结点的树,qqq次询问,每次询问首先是三个数k,m,rk,m,rk,m,r,接下来跟着kkk个结点编号,请你将这kkk个结点分成不超过mmm组,使得在以rrr为根的情况下,组内的任意两个结点不存在祖先关系,求方案数对109+710^9+7109+7取模。根不一定在这kkk个点内。n,q<=1e5,∑k<=5e5n,q<=1e...原创 2019-03-27 11:51:31 · 486 阅读 · 0 评论 -
洛谷4211 LNOI2014 LCA 树剖 主席树
题目链接题意:给你一个nnn个点的树,有qqq次询问,每次给你一个区间和一个点xxx,问你xxx这个点和区间里每一个点的lca的深度之和。n,q<=50000n,q<=50000n,q<=50000。题解:这个题我的代码在BZOJ上RE了,不知道为什么原因,但是在洛谷上过了,不想调了。于是就不挂BZOJ的标签了。做法是,你一般来说,要做一个区间的点不好搞...原创 2019-03-26 16:37:24 · 283 阅读 · 0 评论 -
洛谷4556 BZOJ3307 [Vani有约会]雨天的尾巴 线段树合并 差分 LCA
题目链接题意:首先村落里的一共有nnn座房屋,并形成一个树状结构。然后救济粮分mmm次发放,每次选择两个房屋(x,y)(x,y)(x,y),然后对于xxx到yyy的路径上(含xxx和yyy)每座房子里发放一袋z类型的救济粮。然后问当所有的救济粮发放完毕后,每座房子里存放的最多的是哪种救济粮。如果有多种数量相同的输出编号最小的。n,m,z<=1e5n,m,z<=1e5...原创 2019-03-23 14:09:56 · 313 阅读 · 0 评论 -
洛谷5268 BZOJ5016 SNOI2017 一个简单的询问 莫队
题目链接题意:给你一个长度为nnn的序列aia_iai,1≤i≤n1\leq i\leq n1≤i≤n,和qqq组询问,每组询问读入l1,r1,l2,r2l_1,r_1,l_2,r_2l1,r1,l2,r2,需输出∑x=0∞get(l1,r1,x)⋅get(l2,r2,x)\sum\limits_{x=0}^\infty \text{get}(l_1,r_1,x)\cdot \tex...原创 2019-03-26 07:57:25 · 192 阅读 · 0 评论 -
CF762E Radio stations 动态开点线段树
题目链接题意:一共有nnn个电台,对于每个电台iii有三个参数:xi,ri,fix_i,r_i,f_ixi,ri,fi ,分别指它的一维坐标、作用半径和频率。如果两个电台的频率差值在kkk内,并且它们的作用范围都能覆盖到彼此,那么就称这两个电台相互干扰。kkk是一开始给定的。问这nnn个站台中相互干扰的站台有多少对。n<=1e5,k<=10,xi,ri&...原创 2019-03-22 15:04:27 · 269 阅读 · 0 评论 -
CF915E Physical Education Lessons 动态开点线段树
题目链接题意:你有nnn个位置,一开始全是1。有qqq次操作,每次操作把一个区间的数全变成000或全变成111,问每次操作后区间111的个数。n<=1e9,q<=3e5n<=1e9,q<=3e5n<=1e9,q<=3e5。题解:一看就是一个动态开点线段树裸题吧。就是复习一下写法。我的写法是维护0的个数,用nnn减去000...原创 2019-03-22 09:30:21 · 113 阅读 · 0 评论 -
洛谷2336 BZOJ2754 SCOI2012 喵星球上的点名 SA 莫队 二分
题目链接题意:有nnn个人,每个人有两个串,一个表示姓,一个表示名,这里用数字表示字符。有mmm次询问,对于每次询问,你要回答有多少个人的姓或者名至少有一个是给出的串的子串。最后再对于这nnn个人中的每一个人,回答这个mmm个串中的多少个串是这个人的姓或者名至少一个的子串。n&lt;=5e4,m&lt;=1e5,总长度&lt;=1e5,数值&lt;=1e4n&a...原创 2019-02-22 16:53:21 · 207 阅读 · 0 评论