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

摘要:题目链接 牛客练习赛29E 对$20$位分别建立线段树。首先$1$和$2$可以合起来搞(左移右移其实是等效的) 用个lazy标记下。转移的时候加个中间变量。 $3$和$4$其实就是区间$01$覆盖操作。 $5$就直接做就可以了。 阅读全文
posted @ 2018-10-20 14:46 cxhscst2 阅读(300) 评论(0) 推荐(0)
摘要:题目链接 ZOJ Monthly, March 2018 Problem F 题意很明确 这个模数很奇妙,在$[0, mod)$的所有数满足任意一个数立方$48$次对$mod$取模之后会回到本身。 所以开$48$棵线段树,和一个永久标记。当对某个区间操作时对这个区间加一层永久标记。 即当前我要查找的 阅读全文
posted @ 2018-03-12 14:23 cxhscst2 阅读(387) 评论(0) 推荐(0)
摘要:题目链接 Round #458 (Div. 1 + Div. 2, combined) Problem D 题意 给定一个序列,两种询问:单点修改,询问某个区间能否通过改变最多一个数使得该区间的$gcd$值为$val$。 问题转化为询问某个区间里不是val的倍数的数的个数是否不超过$1$。 用线段树 阅读全文
posted @ 2018-03-12 12:58 cxhscst2 阅读(292) 评论(0) 推荐(0)
摘要:题目链接 2016 ACM-ICPC EC-Final Problem G 题意 给定一个无向图。每个点有一种颜色。 现在给定$q$个询问,每次询问$x$和$w$,求所有能通过边权值不超过$w$的边走到$x$的点的集合中,哪一种颜色的点出现的次数最多。 次数相同时输出编号最小的那个颜色。强制在线。 阅读全文
posted @ 2018-03-03 23:38 cxhscst2 阅读(529) 评论(0) 推荐(0)
摘要:题目链接 Problem D 这个题类似 SPOJ GSS3 做过那个题之后其实就可以秒掉这题了。 考虑当前线段树维护的结点 在那道题的基础上,这个题要多维护几个东西,大概就是左端点的奇偶性,右端点的奇偶性。 以及当前结点代表的区间是否是一个有效的子序列。 时间复杂度$O(nlogn)$ 阅读全文
posted @ 2018-02-24 22:27 cxhscst2 阅读(304) 评论(0) 推荐(0)
摘要:题目链接 Jamie and Tree 题意 给定一棵树,现在有下列操作: $1$、把当前的根换成$v$;$2$、找到最小的同时包含$u$和$v$的子树,然后把这棵子树里面的所有点的值加$x$; $3$、查询以$v$为根的子树的点权之和。 这道题其他都是常规操作,就是当前根结点为$cnt$的时候求$ 阅读全文
posted @ 2018-02-09 00:33 cxhscst2 阅读(259) 评论(0) 推荐(0)
摘要:题目链接 BZOJ3083 换根不能真正地换。 令当前的根为$cnt$,要查找的子树根为$x$ $1$、$x = cnt$,那么要查找的区域就是整棵树。 $2$、$x$在以$cnt$为根的子树内,那么要查找的区域就是以$x$为根的子树。 $3$、$x$在以$cnt$为根的子树外 (1)$x$不是$c 阅读全文
posted @ 2018-02-09 00:23 cxhscst2 阅读(282) 评论(0) 推荐(0)
摘要:题目链接 Eyes Closed 题意 两个人玩一个游戏,现在有两种操作: 1、两个人格子挑选一个区间,保证两个的区间不相交。在这两个区间里面各选出一个数,交换这两个数。 2、挑选一个区间,求这个区间的和的期望。 对于第一种操作,先求出两个区间的长度$len1$和$len2$,再求出两个区间的期望和 阅读全文
posted @ 2017-12-06 20:08 cxhscst2 阅读(262) 评论(0) 推荐(0)
摘要:题目链接 Legacy 首先对于输入的$n$,建立一棵线段树。 显然线段树有大概$2n$个结点,每个节点对应一段区间 我们把这$2n$个结点加入我们的无向图中,一起跑最短路。 具体连边方案: 我们把这棵线段树复制一下,另外一棵倒过来。 首先第一棵线段树,每个结点向他的两个儿子连有向边,连到叶子结点的 阅读全文
posted @ 2017-12-02 11:28 cxhscst2 阅读(216) 评论(0) 推荐(0)
摘要:题目链接 C.Butterfly 令$fd[i][j]$为以$s[i][j]$为起点开始往下走最大连续的‘X’个数 令$fl[i][j]$为以$s[i][j]$为起点开始往左下走最大连续的‘X’个数 令$fr[i][j]$为以$s[i][j]$为起点开始往左下走最大连续的‘X’个数 令$a[i][j 阅读全文
posted @ 2017-12-02 11:05 cxhscst2 阅读(232) 评论(0) 推荐(0)
摘要:题目链接 D.Delete 考虑到原图是个DAG,于是我们可以求出每个点的拓扑序。 然后预处理出起点到每个点的最短路$ds[u]$, 和所有边反向之后从终点出发到每个点的最短路$dt[u]$。 令点$u$的拓扑序为$a(u)$。 对于特定的一条边$(u, v, w)$,相当于给所有拓扑序为$[a(u 阅读全文
posted @ 2017-12-01 02:03 cxhscst2 阅读(259) 评论(0) 推荐(0)
摘要:题目链接 A Simple Task 题意 给出一个小写字母序列和若干操作。每个操作为对给定区间进行升序排序或降序排序。 考虑权值线段树。 建立26棵权值线段树。每次操作的时候先把26棵线段树上的所有在该区间内的信息清空。 然后再通过类似计数排序的方式从左往右(或从右往左)依次塞进去。 阅读全文
posted @ 2017-10-31 17:44 cxhscst2 阅读(388) 评论(0) 推荐(0)
摘要:题目链接 Danil and a Part-time Job 题意 给出一系列询问或者修改操作 $pow$ $x$表示把以$x$为根的子树的所有结点的状态取反($0$变$1$,$1$变$0$) $get$ $x$表示求以$x$为根的子树中状态为$1$的结点数。 首先大力$dfs$序,然后线段树操作一 阅读全文
posted @ 2017-10-31 16:57 cxhscst2 阅读(201) 评论(0) 推荐(0)
摘要:题目链接 HDU5893 $2016$年$ICPC$沈阳网络赛的$B$题。这道题其和 BZOJ2243 基本一样 那道题我也写了题解 点这里 两道题的区别就是$BZOJ$这题是点的权值,这道题是边权。 所以我们把边权看成这条边连接的两个点的深度较大的那条边的点权就可以了。 但是这样的话根结点就没有权 阅读全文
posted @ 2017-09-16 21:14 cxhscst2 阅读(218) 评论(0) 推荐(0)
摘要:题目链接 楼房重建 解题思路:我们可以把楼房的最高点的斜率计算出来。那么问题就转化成了实时查询x的个数,满足数列x的左边没有大于等于x的数。 我们可以用线段树维护 设t[i]为如果只看这个区间,可以看到的楼房数量有多少。 f[i]为这个区间的x的最大值 更新的时候我们递归讨论。 计算t[i]时,区间 阅读全文
posted @ 2017-08-16 15:14 cxhscst2 阅读(169) 评论(0) 推荐(0)
摘要:题目链接 The Bakery 题目大意:目标是把$n$个数分成$k$组,每个组的值为这个组内不同的数的个数,求$k$个组的值的和的最大值。 题目分析: 这道题我的解法可能和大众解法不太一样……我用主席树求$ask(l, r)$——$l$到$r$之间有多少个不同的数。 然后就是$DP$了。 这道题的 阅读全文
posted @ 2017-08-14 21:47 cxhscst2 阅读(299) 评论(0) 推荐(0)
摘要:题目链接 Treeland Tour 题目就是让你求树上LIS 先离散化,然后再线段树上操作。一些细节需要注意一下。 阅读全文
posted @ 2017-07-21 22:12 cxhscst2 阅读(507) 评论(0) 推荐(0)
摘要:题目链接 New Year Tree 考虑到$ck <= 60$,那么用位运算统计颜色种数 对于每个点,重新标号并算出他对应的进和出的时间,然后区间更新+查询。 用线段树来维护。 阅读全文
posted @ 2017-05-02 21:37 cxhscst2 阅读(235) 评论(0) 推荐(0)
摘要:题目链接 [Scoi2010]序列操作 考验代码能力的一道好题。 思想还是很简单的(直接上线段树),但是比较难写。 阅读全文
posted @ 2017-04-11 19:27 cxhscst2 阅读(152) 评论(0) 推荐(0)
摘要:题目链接 区间交 给定n和k,求k个区间,使得这K个区间的交集的数的和最大。 阅读全文
posted @ 2017-04-08 20:12 cxhscst2 阅读(162) 评论(0) 推荐(0)