线段树
文章平均质量分 72
Aaplloo
天天都想摆
展开
-
[CF208E] Blood Cousins (线段树合并)
题意题目输入一个森林。mmm 个询问 xxx 点的 ppp 代近亲。思路维护每个点的线段树,树上维护的是 xxx 子树区间深度节点个数,父节点合并上子节点的即可。void Dfs(LL x,LL Fa){ Dep[x] = Dep[Fa] + 1; int l = G[x].size(); for (Int i = 0; i < l; ++ i) Dfs(G[x][i], x);}inline void Build(){ for (Int i = 1; i <=原创 2020-06-02 21:09:22 · 148 阅读 · 0 评论 -
[HNOI2009]梦幻布丁(线段树合并)
题意洛谷题目大意为:每个位置有一个颜色,有两种操作。操作一是将所有 xxx 颜色都修改为 yyy 颜色,操作二是统计序列里有多少颜色段。思路思路其实很明显。我们可以用链表储存信息,用启发式合并保证操作二的时间复杂度即可。然而我用的是线段树合并,思路很简单:就用 nnn 棵线段树维护每种颜色区间位置和答案即可,因为不同颜色之间是没有影响的。使用动态开点线段树然后进行线段树合并即可。Code:LL Ans, Root[MAXN * 10], Son[MAXN * 18][2], SonQ[MAXN原创 2020-06-02 15:39:04 · 212 阅读 · 0 评论 -
[CTSC2016]时空旅行 (线段树分治)
前言昨天学习了线段树分治,算法比较抽象,没有学得太具体,今天做一道例题练练手——自闭前题面上洛谷题意维护若干个集合,每个集合都是由一个编号比它小的集合加入一个二元组(x,c)(x,c)(x,c)或者删去一个元素拓展而来的。如此,集合的拓展关系之间构成一个树形结构。给出mmm次询问,给出一个kkk和XXX,询问第kkk个集合中(x−X)2+c(x-X)^2+c(x−X)2+c的最小值。n,m<=5e5n,m<=5e5n,m<=5e5思路首先,如果XXX值是固定的,可以用主席树原创 2020-05-19 15:36:25 · 243 阅读 · 0 评论 -
[SDOI2011] 拦截导弹 (咕咕咕)
题目思路有两个子任务——最多拦截的导弹个数和每个导弹被拦截的概率。对于子任务一:首先,我们可以定义一个dp[i]dp[i]dp[i]为拦截了第iii个导弹的最大拦截数。易得到:dp[i]=Max(dp[j]+1) (j<i,h[j]>h[i],v[j]>v[i])dp[i]=Max(dp[j]+1)\ (j<i,h[j]>h[i],v[j]>...原创 2020-05-18 14:50:08 · 190 阅读 · 0 评论 -
线段树分治
线段树分治首先,这里的线段树是狭义的线段树。而线段树分治是一种维护时间区间的数据结构,利用线段树的分治性使时间复杂度为logloglog级别。维护时间区间的数据结构有CDQ分治、KD-Tree,那么线段树分治和它们的区别在哪里呢?其实,它就是用回退操作来实现可持久化,或者说是维护了操作会影响的时间区间。我们考虑如何得到这个操作影响的时间区间。假设一个操作会影响的时间区间为[L,R][L,R][L,R],转移分散到线段树上是logloglog段。当回退一个操作,在线段树上找到这个询问所在的时间点。把树原创 2020-05-15 20:55:22 · 330 阅读 · 0 评论 -
[BZOJ4184] shallot (线段树分治+线性基)
题目小苗去市场上买了一捆小葱苗,她突然一时兴起,于是她在每颗小葱苗上写上一个数字,然后把小葱叫过来玩游戏。每个时刻她会给小葱一颗小葱苗或者是从小葱手里拿走一颗小葱苗,并且让小葱从自己手中的小葱苗里选出一些小葱苗使得选出的小葱苗上的数字的异或和最大。这种小问题对于小葱来说当然不在话下,但是他的身边没有电脑,于是他打电话给同为Oi选手的你,你能帮帮他吗?你只需要输出最大的异或和即可,若小葱手中没有小葱苗则输出0。Input第一行一个正整数nnn表示总时间;第二行nnn个整数a1,a2...ana1,原创 2020-05-15 11:57:06 · 202 阅读 · 0 评论 -
[线性基]Duff as a Queen
题目——洛谷利用差分维护差分数组线性基即可。#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define MAXN 200005#define LL int#define Int register intusing namespace std;inline void read(LL &x){ x = 0; LL f = 1;原创 2020-05-14 16:06:08 · 129 阅读 · 0 评论 -
线段树
线段树学习笔记前言之前讲线段树的时候没有学好,平时线段树的题也做得比较少,进行一些整理。概念线段树,是一种二分查找树的数据结构。将一段区间划分为一些单位区间, 线段树中的每一个节点都储存了一段区间[L, R], 其中叶节点的区间 L = R。线段树的思想和二分很像,将一段大区间从中间平均分成两个区间[L, Mid], [Mid + 1, R], 小区间再分成两个更小的区间,直到该区间的L ...原创 2019-10-25 21:40:58 · 184 阅读 · 1 评论