
线段树
Absoler
这个作者很懒,什么都没留下…
展开
-
牛客多校 E Explorer(时间分治+可持久性并查集)
题目cdq分治,也叫时间分治,核心概念就是对于若干个操作和查询,维护每次操作在哪个时间段中有效。这道题中的size就是时间,我们维护某个size区间上点的连通状况(用并查集维护),进行查询时进入某个点则连上这个点上的边,退出它时把并查集再复原。#include<bits/stdc++.h>using namespace std;#define lson rt<&...原创 2020-04-14 23:29:43 · 274 阅读 · 0 评论 -
线段树RMQ(MAX)模板
线段树求区间最大模板原创 2019-07-25 22:50:29 · 299 阅读 · 1 评论 -
扫描线+离散化+线段树HDU1255&POJ1177
首先我们要对扫描线算法建立一个形象的认识,可以参考链接。大概就是,对于某个由多个矩形覆盖重叠形成的不规则几何体的面积,可以转化为从下往上一系列小矩形,有点像垒砖,层数为线段数-1,也就是矩形数*2-1。在这个算法里,线段树维护整个区间被覆盖的,有效的“长”,它是由一小段一小段的线段组成,我们对于每条线段添加一个flag成员变量,当该线段被某矩形的下边包含,该线段flag+1,上边则-1。如果该...原创 2019-08-28 21:06:38 · 175 阅读 · 0 评论 -
可持久化线段树
可持久化线段树可以用来解决这个经典问题:对于给定数字序列,求出 [l, r] 区间中第K大的数。我们首先考虑这样一棵线段树i,它的每个节点对应一段值域,记录了[1, i]区间中落在节点对应值域的点的个数。如果我们能有n棵这样的线段树,那么对于区间第K大问题就可以通过搜索(代表[l,r]区间中大小在i对应值域中点的个数)来解决。比如如果左区间的量为res小于k,那么就继续在右区间找第...原创 2019-10-18 00:59:58 · 167 阅读 · 0 评论 -
HDU6602线段树+思维
http://acm.hdu.edu.cn/showproblem.php?pid=6602题意:给出一个1e5规模数列,数字范围也在1e5内,给出K,求最长子序列,使得序列中出现的任一数字都至少出现K次。考虑枚举右端点,尺取法不好做,因为左端点没有简单的找法,,我们这样拆分问题:首先考虑每个数字的合法左端点的取法,易知对于数字a,若i出现不足K次,则左端点只能在最后一次a出现之后,即(最...原创 2019-10-19 21:14:36 · 229 阅读 · 0 评论