随笔分类 -  数据结构——线段树

摘要:"传送门" 题面 题解 不难看出每个点的大小为行列限制中较小的那一个(因为数据保证有解) 对于行的每个限制,能取到的个数是列里限制大于等于它的数的个数,同理,对于列是行里大于它的个数(这里没有等于,为了避免重复计算) 于是可以对于行列分别开权值线段树,修改的时候只要把对应的贡献改一下就好了 //mi 阅读全文
posted @ 2019-01-05 08:16 bztMinamoto 阅读(308) 评论(0) 推荐(0)
摘要:"传送门" 细节要人命.jpg 这题思路太新奇了……首先不难发现可以倒着做变成加边,但是它还需要我们资瓷加边的同时维护强连通分量。显然加边之后暴力跑是不行的 然后有一个想法,对于一条边$(u,v)$,如果所有加入时间在$(0,t)$之间的边能够使$u,v$在同一个强连通分量里,那么$(u,v)$这条 阅读全文
posted @ 2019-01-02 14:43 bztMinamoto 阅读(374) 评论(0) 推荐(0)
摘要:"传送门" 没想出来→_→ 首先不难看出要差分之后计算不相交也不相邻的相等子串对数,于是差分之后建SAM,在parent树上用线段树合并维护endpos集合,然后用启发式合并维护一个节点对另一个节点的贡献,于是总的时间复杂度为$O(n\log^2n)$ 阅读全文
posted @ 2019-01-02 10:22 bztMinamoto 阅读(257) 评论(0) 推荐(0)
摘要:"传送门" 这题要是搞懂在干什么其实不难(虽然某个花了几个小时才搞明白的家伙似乎没资格这么说……) 假设所有人都没有听到老师的命令,我们从左到右考虑,对于当前的人,如果它没有观察者,那么肯定要让它听到老师的指令才行,如果它有观察者,那么它的观察者在之前就已经考虑过,肯定已经听到指令了,那么它也可以听 阅读全文
posted @ 2019-01-01 20:22 bztMinamoto 阅读(179) 评论(0) 推荐(0)
摘要:"传送门" 感觉我去pkuwc好像只有爆零的份…… 设$f_{u,i}$表示$u$取到$i$的概率,那么有如下转移 $$f_{u,i}=f_{ls,i}(p_u\sum_{ji}f_{rs,j})+\\f_{rs,i}(p_u\sum_{ji}f_{ls,j})$$ 然后用线段树合并即可,最后在根节 阅读全文
posted @ 2018-12-30 16:30 bztMinamoto 阅读(134) 评论(0) 推荐(0)
摘要:"传送门" 用一个扫描线的方法刚了俩小时最后发现空间开不下…… 顺便吐槽一句这个线段树的写法一点都不优美…… "题解" 阅读全文
posted @ 2018-12-23 18:08 bztMinamoto 阅读(171) 评论(0) 推荐(0)
摘要:给你 $n$ 个 $k$ 维的点 $a_{1..n}$,定义两点$(x_1,x_2,\cdots,x_k),(y_1,y_2,\cdots,y_k)$$间的曼哈顿距离为 $\sum_{i=1}^k|x_i y_i|$ 。 你需要执行下面两种操作: $1\ i\ b_1\ b_2\cdots b_k$ 阅读全文
posted @ 2018-12-20 19:09 bztMinamoto 阅读(258) 评论(0) 推荐(0)
摘要:"传送门" 简单来说就是对于每条线段,先把它拆成$O(logn)$条,然后对于每一条再$O(logn)$判断在所有子区间的优劣程度 阅读全文
posted @ 2018-12-04 14:35 bztMinamoto 阅读(213) 评论(0) 推荐(0)
摘要:"洛谷题面" 圆方树还真是个神奇的玩意儿…… 我们先考虑询问,对一个点双来说,经过这个点双的时候能走到的最小值肯定是这个点双内的最小值,那么只要对于每个点双把它的权值设成它里面所有点的最小值,那么就可以在建出广义圆方树之后用树链剖分求出路径最小值了 然而这里有询问,一个想法是对每个点双开一个mult 阅读全文
posted @ 2018-11-29 15:08 bztMinamoto 阅读(223) 评论(0) 推荐(0)
摘要:"传送门" 一道线段树合并 首先不难看出树上差分 我们把每一次修改拆成四个,在$u,v$分别放上一个,在$lca$和$fa[lca]$各减去一个,那么只要统计一下子树里的总数即可 然而问题就在于怎么统计。直接暴力肯定是要咕咕的,那么线段树合并就派上用场了 总之就是每个点开一个动态开点线段树,然后一遍 阅读全文
posted @ 2018-11-26 22:34 bztMinamoto 阅读(171) 评论(0) 推荐(0)
摘要:"传送门" 达成成就:一人独霸三页提交 自己写的莫名其妙MLE死都不知道怎么回事,照着题解打一直RE一个点最后发现竟然是凸包上一个点求错了……四个半小时就一直用来调代码了…… 那么我们只要维护好这个凸壳,因为这是一个凸函数,所以只要在上面三分找最值即可 于是现在我们需要维护一个资瓷插入的凸壳。考虑线 阅读全文
posted @ 2018-11-22 19:36 bztMinamoto 阅读(163) 评论(0) 推荐(0)
摘要:"传送门" 权值线段树+线段树合并 我们对每一个节点开一棵权值线段树,那么考虑一个节点是否交换它的左右儿子。首先交换对左右子树内部的逆序对数无影响,对该子树与子树之外的逆序对也没有影响,于是只要考虑左右子树的逆序对数即可。考虑当前为权值线段树上的节点,$x,y$分别是左右子树上得到该节点,$L,R, 阅读全文
posted @ 2018-11-16 13:00 bztMinamoto 阅读(101) 评论(0) 推荐(0)
摘要:"传送门" 很妙的思路 首先这是一个DAG,于是我们先在原图和反图上各做一遍,分别求出$diss_i$和$dist_i$表示从$i$点出发的最短路和以$i$为终点的最短路 我们考虑把点分为两个集合$S$和$T$,一开始所有的点都在$T$中,按照拓扑序依次将点从$T$中取出放入$S$ 考虑对于点$u$ 阅读全文
posted @ 2018-11-15 13:25 bztMinamoto 阅读(142) 评论(0) 推荐(0)
摘要:"传送门" 很妙的思路 首先,我们可以把每一栋楼房转化为它的顶部到原点这条直线的斜率,这样就变成了从一个序列中选出一个最长上升子序列(其实不是最长上升子序列,不过可以这么理解) 考虑用线段树来维护,对于每个区间,我们维护这个区间的最大值以及这个区间的答案,那么最后的答案就是$ans[1]$ 对于叶节 阅读全文
posted @ 2018-11-14 12:56 bztMinamoto 阅读(174) 评论(0) 推荐(0)
摘要:"传送门" 首先$a,b,c$肯定在一条链上。当$b$为$a$的祖先时,$a$的子树中所有与它不同的点都可以作为点$c$,当$a$为$b$的祖先时,$b$的子树中所有与它不同的点都可以作为答案 前者直接$sz[a] min(k,dep[a])$即可,关键是后者,如果把$size$作为节点的值,我们需 阅读全文
posted @ 2018-11-13 14:29 bztMinamoto 阅读(208) 评论(0) 推荐(0)
摘要:"传送门" 首先这玩意儿很明显是分数规划,二分一个答案$mid$,边权变为$w_i mid$,然后看看能不能找到一条路径长度在$[L,R]$之间,且边权总和非负,这个可以转化为求一条满足条件的边权最大的路径 这个实际上可以用点分做,用单调队列可以优化到$O(nlog^2n)$,然而我不知道为什么写挂 阅读全文
posted @ 2018-11-12 22:15 bztMinamoto 阅读(156) 评论(0) 推荐(0)
摘要:给定一个序列。查询左端点在$[x_1, y_1]$之间,且右端点在$[x_2, y_2]$之间的最大子段和,数据保证$x_1\leq x_2,y_1\leq y_2$,但是不保证端点所在的区间不重合 这题可以分为几种情况讨论 $y_1<x_2$ 那么这个时候发现$[y_1+1,x_2-1]$里的数必 阅读全文
posted @ 2018-10-21 20:00 bztMinamoto 阅读(191) 评论(0) 推荐(0)
摘要:传送门 线段树好题 因为题目中相同的只算一次,我们可以联想到HH的项链,于是考虑离线的做法 先把所有的询问按$r$排序,然后每一次不断将$a[r]$加入线段树 线段树上维护四个值,$sum,hix,sumtag,hixtag$,分别代表当前节点的值,节点历史上的最大值,当前的增加标记,历史上最大的增 阅读全文
posted @ 2018-10-21 19:17 bztMinamoto 阅读(278) 评论(1) 推荐(0)
摘要:传送门 蠢了…… 我们用线段树,记$w0$为该区间最左端取小值时,最右端最小能取大还是小还是无解,$w1$表示最左端取大值时,最右端最小能取大还是小还是无解 然后只要把交换看做修改就好了 这么说可能很难懂,看看代码应该就明白了 阅读全文
posted @ 2018-10-18 20:37 bztMinamoto 阅读(463) 评论(0) 推荐(0)
摘要:传送门 题解看得……很……迷? 因为取完一个数后,它的子树中只能取权值小于等于它的数。我们先把权值从大到小排序,然后记$a_i$为他左边(包括自己)所有取完他还能取的数的个数。那么当取完一个点$x$的数之后,我们需要为它子树中的点预留出权值,这些权值肯定在它的左边。但我们不知道它子树中的数会取哪几个 阅读全文
posted @ 2018-10-17 21:58 bztMinamoto 阅读(274) 评论(0) 推荐(0)

Live2D