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

摘要:"题目链接" Solution 一个简单的 或 线段树.竟然坑了我一个小时... 因为颜色很小,所以把状态压起来. 然后每个节点上的数值代表当前颜色状态. 然后节点合并很简单,直接或起来. 需要注意一下的地方是修改时的 $lazy$ ,要完全覆盖,这里不能或. Code cpp include de 阅读全文
posted @ 2018-10-11 22:01 Kevin_naticl 阅读(322) 评论(0) 推荐(0)
摘要:"题目链接" Solution 树上差分+线段树合并. 在每个节点上维护一棵权值线段树. 然后如果需要修改 $x,y$ 两点,则在 $x$ 处和 $y$ 处分别加上 $1$ 的权值. 然后在 $lca(x,y)$ 以及 $fa[lca(x,y)]$ 处减掉 $1$ . 最后面 $dfs$ 从下往上更 阅读全文
posted @ 2018-10-11 16:29 Kevin_naticl 阅读(258) 评论(0) 推荐(0)
摘要:"题目链接" Solution 线段树. 观察题目可以得到一个小 $trick$ : 对于任意一个节点 $i$ ,那么和它颜色相同的上一个节点 $pre[i]$,肯定不会放在一个区间. 于是考虑对于每一个节点计算它可以献出贡献的区间. 先 $O(n)$ 扫出每一个点的 $pre$ . 然后从左往右, 阅读全文
posted @ 2018-10-04 20:34 Kevin_naticl 阅读(249) 评论(0) 推荐(0)
摘要:"题目链接" Solution 经典的一道线段树题,难点在于如何合并节点. 由于题目要求直线要求不相交,则斜率均大于前面的点即为答案. 所以以斜率为权值. 考虑 线段树 每一个节点维护两个值: $Max$ 代表当前节点中的最大值. $Sum$ 代表对于任意一个节点 $i$ , 其中满足$w_j Ma 阅读全文
posted @ 2018-10-03 00:20 Kevin_naticl 阅读(189) 评论(0) 推荐(0)
摘要:"题目链接" Solution 直接维护一个差分的线段树就好了. 其中线段树的节点代表 $r$ 比 $l$ 多多少. Code cpp include define ll long long define mid (l+r)/2 using namespace std; const int maxn 阅读全文
posted @ 2018-09-05 15:47 Kevin_naticl 阅读(146) 评论(0) 推荐(0)
摘要:"题目链接" Solution 线段树是一门比较刁钻的手艺... 此题我们需要维护 $4$ 个变量: 1. $amx$ 代表当前节点的最大值. 2. $lmx$ 代表当前节点以左端点为起点的区间最大值. 3. $rmx$ 代表当前节点以右端点为结尾的区间最大值. 4. $sum$ 代表整段的和. 然 阅读全文
posted @ 2018-08-25 19:34 Kevin_naticl 阅读(208) 评论(0) 推荐(0)
摘要:题目描述 老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成。 有长为N的数列,不妨设为a1,a2,…,aN 。有如下三种操作形式: (1)把数列中的一段数全部乘一个值; (2)把数列中的一段数全部加一个值; (3)询问数列中的一段数的和,由于答案可能很大,你只需输出这个数模P的值。 输入 阅读全文
posted @ 2018-05-29 21:33 Kevin_naticl 阅读(215) 评论(0) 推荐(0)
摘要:题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1、 查询操作。 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值。 限制:L不超过当前数列的长度。(L>=0) 2、 插入操作。 语法:A n 功能:将n加上t,其中t是最近一次查询操作的答案(如果还未执行过查询操 阅读全文
posted @ 2018-05-22 21:39 Kevin_naticl 阅读(230) 评论(0) 推荐(0)
摘要:题目描述 现有N(2 ≤ N ≤ 100000)盏灯排成一排,从左到右依次编号为:1,2,......,N。然后依次执行M(1 ≤ M ≤ 100000)项操作,操作分为两种:第一种操作指定一个区间[a, b],然后改变编号在这个区间内的灯的状态(把开着的灯关上,关着的灯打开),第二种操作是指定一个 阅读全文
posted @ 2018-05-04 21:52 Kevin_naticl 阅读(264) 评论(0) 推荐(0)
摘要:题目描述 地平线(x轴)上有n个矩(lou)形(fang),用三个整数h[i],l[i],r[i]来表示第i个矩形:矩形左下角为(l[i],0),右上角为(r[i],h[i])。地平线高度为0。在轮廓线长度最小的前提下,从左到右输出轮廓线。 下图为样例2 输入输出格式 输入格式: 第一行一个整数n, 阅读全文
posted @ 2017-12-31 09:44 Kevin_naticl 阅读(409) 评论(0) 推荐(1)