
线段树
CoAAColA
吾心吾行澄如明镜,所作所为均是正义
展开
-
Educational Codeforces Round 87 (Rated for Div. 2) D. Multiset
题意:给定一个含有n个数的数组,每个数的范围都在[1,n]之间,有k个操作,操作有两种,一种是将数组中第k小的数删除,一种向数组中插入一个[1,n]之间的数,在所有操作完成后,如果数组中还有数,那么任意输出一个,否则输出0。思路:该题乍一看就和一个普通的权值线段树没什么区别,但它给的内存空间比较小,因此线段树区间信息只能作为函数参数传递,而不能写一个结构体来储存区间信息。代码:#include <iostream>#include <windows.h>using原创 2020-05-22 23:56:19 · 314 阅读 · 0 评论 -
Codeforces Round #602 (Div. 2) D2.Optimal Subsequences (Hard Version)
D2.Optimal Subsequences (Hard Version)题意:给一个长度为n的序列,m次询问,问你原序列的总和最大且字典序最小的长度为k的子序列的第pos位元素是多少。思路:对询问按照长度排序,在原序列上建立一个线段树,线段树保存区间的最大值MAX,最大值的位置pos,区间中多少元素已被加入新序列中sum。当新序列的长度小于当前询问的长度时,将序列中的最大值置为0,该位...原创 2019-11-27 19:52:28 · 193 阅读 · 0 评论 -
hdu - 6681 Rikka with Cake 线段树
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6681题意:给定一个左下顶点为,右上顶点为的矩形,然后给你k条射线,每条射线的起点及方向(上下左右)都已知,射线的起点都位于矩形内,不包括矩形边界,且每条射线间不会有重叠,求矩形被分割成多少块。思路:由于是射线,因此容易知道每一次射线的相交都会使答案+1,考虑用线段树求解。按照起始点的x坐标对射...原创 2019-08-20 10:26:57 · 515 阅读 · 1 评论 -
hdu - 1225 扫描线
题目链接题意:给你若干个矩形,求被矩形覆盖过至少两次的区域的面积;思路:典型的扫描线的题目,唯一需要处理的问题是如何判断覆盖次数,我第一次做的时候是用了一个lazy数组来表示当前区间被覆盖的此数,由此而配套了一个pushDown函数,用于处理lazy[]和cnt[]间的传递,今天重做的时候发现cnt[]与lazy[]基本相同,由此想到之前的lazy[]类似于一个状态值,但我们并不需要用一个...原创 2019-06-08 02:02:07 · 149 阅读 · 0 评论 -
BZOJ-3531 luogu-P3313 树链剖分 + 线段树 + 动态开点
题目链接luogu - P3313题意:中文题思路:用树链剖分处理图后,可对每一个宗教用一颗线段树维护其区间内的和以及最大值,由于内存有限,故使用动态开点从而节省空间(本来花了大概一小时就完成了,结果把区间查询写成了单点查询,花了一个小时才改出来。。。)#include <iostream>#include <stdio.h>using namespa...原创 2019-05-28 02:28:58 · 231 阅读 · 0 评论 -
Gym - 101848C 树链剖分 + 线段树 + 动态开点
学习自 :大佬博客题意: 给一棵树,每一个节点上有多个权值,q次询问,求对于某一个节点,从其自身到根节点的路径上第一个含有给定权值的点的编号;思路:对每一个权值建立一颗线段树,然后用线段树维护区间最大值即可求解.#include <iostream>using namespace std;const int N = 1e5 + 10, MAXN = 3e7 + ...原创 2019-12-04 09:06:36 · 212 阅读 · 0 评论 -
bzoj 2243 luogu p2486 树链剖分+线段树
传送门题意:中文题。思路:进行树链剖分后用线段树维护区间,注意区间合并时相邻端点颜色相同时ans-1,我刚开始对区间端点的处理是建立在原数组上的,改成结构体储存区间左右端点颜色就A了。代码:#include <iostream>using namespace std;typedef long long ll;const int N = 3e5 + 10;...原创 2019-05-07 21:24:15 · 182 阅读 · 0 评论 -
P2146 [NOI2015]软件包管理器 线段树 + 树链剖分
传送门思路:树链剖分模板题,唯一需要想一下的是在安装软件包时如何求得该点到根节点路径上的节点数,不难想出,我们只需要在找LCA时用一个变量记录即可。代码:#include <iostream>#include <string>using namespace std;const int N = 1e5 + 10;struct edge{ in...原创 2019-05-09 20:50:24 · 148 阅读 · 0 评论 -
P4116 Qtree3 树链剖分+线段树
传送门思路:树链剖分后用线段树维护区间中黑点出现的位置的最小值,注意下标的转换就好了代码:#include <iostream>#include <string>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;c...原创 2019-05-08 23:50:14 · 200 阅读 · 0 评论 -
HDU-3308 线段树 区间合并
题意: 多组输入,对于每一个样例,第一行有两个整数:n,m。第二行有一个长度为n的序列。接下来m行为m次操作。对于每一次的查询操作,输出给定区间的最长连续上升子序列的长度,对于每一次的修改操作,将给定位置的整数替换为指定的整数.思路:线段树 单点更新 区间合并 详情看代码。#include <iostream>#include <stdio.h>#includ...原创 2019-04-30 19:26:01 · 222 阅读 · 0 评论 -
P4315 月下“毛景树” 树链剖分+线段树
传送门树链剖分+线段树维护的模板题,但要注意的是边权到点权的转换以及绝对标记和相对标记的关系。#include <iostream>#include <string>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;c...原创 2019-05-08 20:07:39 · 207 阅读 · 0 评论 -
HDU-4614 线段树
Alice有N个花瓶(标号为0~ N-1)。当她收到一些花时,她会随机的选择一个瓶子A,从它开始遍历A,A+1, A+2, ..., N-1号瓶子,遇到空瓶子就放一朵花进去,直到花朵放完或没有瓶子,剩下的花将被丢弃。有时,她也会清理标号从A到B的花瓶(A <= B).花瓶里的花会被丢弃。Input 第一行一个整数T,表示数据组数。 每组数据,第一行一个整数N(1 < ...原创 2019-03-13 21:57:07 · 264 阅读 · 0 评论 -
线段树
线段树详解线段树入门与深入的好博客太谢谢大佬了在这里分享一波转载 2018-06-11 19:53:58 · 158 阅读 · 0 评论