ICode9

精准搜索请尝试: 精确搜索
  • LCA 相关 && 树链剖分2022-08-15 00:03:50

    LCA 基本定义:最近公共祖先简称 LCA(Lowest Common Ancestor)。两个结点的最近公共祖先,就是这两个点的公共祖先里面,离根最远的那个。 简单来讲,就是两个点到根的路径上,深度最深的重合点 常用的求解方法: 朴素方法 每次选择深度较深的那个结点,往上走一步,直到两个结点重合,这个重合点就

  • 树链剖分学习笔记2022-07-17 16:32:12

    目录概述基本概念预处理操作dfs1dfs2具体处理问题1.LCA问题P3379 【模板】最近公共祖先(LCA)Game2:简单树上问题P4281 [AHOI2008] 紧急集合 / 聚会P5903 【模板】树上 k 级祖先2.单点修改,链上求值P2590 [ZJOI2008]树的统计 概述 树链剖分(轻重链剖分)是一个将树上问题转换为序列上问题

  • 一通乱学【树问题相关】2022-07-16 17:34:59

    只要我什么都不会,一道题就可以快乐学习一下午( 货车运输 蓝题 题目描述 A 国有 \(n\) 座城市,编号从 \(1\) 到 \(n\),城市之间有 \(m\) 条双向道路。每一条道路对车辆都有重量限制,简称限重。 现在有 \(q\) 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重

  • 【luogu CF487E】Tourists(圆方树)(树链剖分)(线段树)2022-07-04 23:02:51

    Tourists 题目链接:luogu CF487E 题目大意 给你一个无向图,然后点有点权。 然后每次可能会单点修改点权,或者询问两个点之间所有的路径中点权最小的点。 思路 看到这种所有路径不难想到圆方树。 然后我们考虑方点就是它连着的原点的最小值。 然后会发现如果有修改会每次被卡到 \(O(n)

  • 树链剖分2022-07-02 13:12:30

    目录树链剖分前言模板P3384P2590P3178P3833P2146P4114P4315P1505CF343DCF877EP6157P3979P2486 树链剖分 前言 我认为树链剖分是一种工具而不是数据结构 它能让你处理树上的链的操作 感觉像是 序列 \(\rightarrow\) 树 的一种媒介,序列问题 \(+\) 树剖 \(=\) 树上问题 是这样没错了

  • 树链剖分2022-06-25 11:04:45

    遍历: inline void dfs(int u) { sz[u] = 1; dep[u] = dep[fa[u]] + 1; int v; for(int e = hd[u]; e; e = nt[e]) { dfs(v = to[e]); sz[u] += sz[v]; if(sz[v] > sz[son[u]]) son[u] = v; } } inline void dfs2(int u) { dfn[u] = ++tott; rv[tott] = u; to

  • 树链剖分2022-06-12 17:32:24

    重链剖分 int dep[Z], siz[Z], dad[Z], kid[Z];//kid[rt]:rt的重儿子编号 int dfn[Z], tim, top[Z], rnk[Z];//top[rt]:rt所在重链的顶部节点; rnk[rt]:dfs序为rt的节点编号 void search(int rt, int fa)//寻找重边和重儿子 { dad[rt] = fa, kid[rt] = 0; dep[rt] = dep[fa]

  • 树链剖分2022-06-05 14:31:18

    引言 树链剖分(简称“树剖”,又称“重链剖分”)是一种将一棵树转化为一段连续的区间的方法。 这种方法可以将一棵树根据子树大小,也就是所谓的“重儿子”和“轻儿子”,来将一棵树划分成若干条”重链“,并可以保证,在任意一条路径上的连续的链都不超过 \(\log_2{n}\) 个。 树剖可以借助一

  • [模板]树链剖分2022-05-18 16:34:53

    简易版树链剖分 #include<cstdio> #include<cstring> #include<string> #include<iostream> #define WR WinterRain using namespace std; const int WR=1001000,INF=2147483647; struct SegmentTree{ int l,r,val,sum; }tree[WR]; struct Edge{ i

  • 树链剖分学习笔记2022-04-28 22:04:34

    树链剖(pōu)分 定义 树链剖分用于将树分割成若干条链的形式,以维护树上路径的信息。 树链剖分有多种形式,如重链剖分、长链剖分等,通常说的树链剖分指重链剖分。 重链剖分 首先给出一些定义: 重子节点:所有子节点中子树大小最大的子节点 轻子节点:除重子节点的其它子节点 重边:从

  • 数据结构专题-专项训练:树链剖分2022-04-10 20:00:30

    目录1. 前言2. 题单P3313 [SDOI2014]旅行P2486 [SDOI2011]染色P1505 [国家集训队]旅游3. 总结 1. 前言 本篇博文为树链剖分的算法总结与专题训练。 没有学过树链剖分? 传送门:算法学习笔记:树链剖分 树剖作为一种工具,可以有效解决各类树上问题。 需要注意的是,借助数据结构维护重链信

  • 树链剖分2022-04-03 18:04:01

    LCA struct Edge{ int v,nxt; }edge[maxn]; int head[maxn],tot=0; inline void read(int &x){ x=0;char tmp=getchar(); while(tmp<'0'||tmp>'9')tmp=getchar(); while(tmp>='0'&&tmp<='9')x=(x<<

  • 【动态开点线段树&树链剖分】【[SDOI2014]旅行】2022-02-09 20:01:04

    【动态开点线段树&树链剖分】【[SDOI2014]旅行】 题目传送门 写篇题解巩固一下动态开点线段树和树链剖分,并附上模板 一、动态开点线段树 在某些题目中我们不需要把线段树的所有节点都建立出来,而是当用到某个节点时才建立该节点,从而节省空间。 用到动态开点线段树的题,一般有几个特

  • 树链剖分求lca2022-02-05 18:02:31

    题目描述 给一棵有根树,以及一些询问,每次询问树上的2 个节点A、B,求它们的最近公共祖先. 输入 第一行一个整数N.接下来N 个数,第i 个数Fi 表示i 的父亲是Fi. 若Fi = 0,则i 为树根. 接下来一个整数M.接下来M 行,每行2 个整数A、B,询问节点(A xor LastAns)、(Bxor LastAns)的最近公共祖先

  • 学习笔记——树链剖分2022-01-26 14:34:10

    思想 对于每个节点,把所有子节点中子树最大的一个,成为重点,其它成为轻点。重点到父亲节点的连线成为重边,重边连接成若干条重链,其余的每个点称为重链。 可以发现,如果路径经过一条轻边,那么现在的子树大小至少缩小一半,所以每条路径可以被拆分成最多 \(\log n\) 条链,这样一来,就可以把较

  • 树链剖分2021-12-19 17:34:24

    前言 今天szt学长给我们讲了树剖,听完之后脑子着实嗡嗡的,这什么玩意啊 ,本来想做题,但还是想先巩固一下吧。于是这篇文章诞生了… 树剖能干什么? 修改两点路径上的值 查询两点路径上的值 修改单点的值 查询单点的值 前置知识 1.线段树,不会请退役。 2.dfs序,不会请自行百度,这里给篇文

  • 树链剖分学习笔记(二)2021-11-18 01:04:16

    上一篇:树链剖分学习笔记(一) 这篇是长链剖分 并没有仔细研究过这方面的内容,所以就随便写点简单的东西了 1. 概念 长链剖分也是一种树链剖分,所以和轻重链剖分很相似 区别是长链剖分选择子树深度最大的儿子作为重儿子,而不是子树大小最大的 它也具有一些性质: 链长总和是 \(O(n)\) 级

  • P6805-[CEOI2020]春季大扫除【贪心,树链剖分,线段树】2021-10-21 14:02:47

    正题 题目链接:https://www.luogu.com.cn/problem/P6805 题目大意 给出\(n\)个点的一棵树,\(q\)次独立的询问。每次询问会在一些节点上新增一些子节点,然后你每次可以选择两个为选择过的叶子节点然后覆盖它们的路径,要求在覆盖所有边的情况下使得每次的路径长度和最小。 \(1\leq n,q

  • 【树链剖分】有序剖分模板2021-09-13 20:35:50

      struct seg { int l, r; int flag; int id; }s[N]; int split(int x, int y) { int cnt = 0; int flag=0; int fx = top[x], fy = top[y]; while (fx != fy) { if (dep[fx] < dep[fy]) { swap(fx, fy); sw

  • 树链抛分小记2021-09-04 22:00:10

    Powered by:NEFU AB_IN 文章目录 树链剖分介绍前置知识主要思想代码解析例题题意思路代码 树链剖分 介绍 把“树”“剖分”成“链” 前置知识 线段树树的 d f

  • dfs序与树链剖分2021-08-18 01:03:35

    dfs序与树链剖分 本文根据以下视频整理 链接 引子 先看一个题: 已知一棵树,每个节点包含一个权值,你需要设法实现以下操作 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有结点的值加上z 操作2: 格式: 2 x y 表示求树从x到y结点最短路径上所有结点的值之和 操作3: 格式:

  • 「个人」学习笔记目录2021-08-03 10:34:40

    字符串算法 「学习笔记」Manacher 算法 「学习笔记」AC 自动机 图论 「学习笔记」Johnson 全源最短路 「学习笔记」二分图 数据结构 「学习笔记」笛卡尔树 「学习笔记」树链剖分 「学习笔记」莫队算法 动态规划 「学习笔记」数位dp

  • 树链剖分入门2021-07-26 13:03:17

    前置芝士:低复杂度的区间操作算法(线段树等)+dfs+LCA 例题引入:树链剖分模板 题目要求我们对树上的路径和子树进行修改与查询 暴力: 任何算法的优化都是源于暴力, 对于路径的修改,我们可以直接采用LCA求出A和B的公共祖先C,对于(A,C)和(B,C)两条路径进行加和 对于子树的修改,我们可以直接

  • 树链剖分の学习笔记2021-07-26 12:03:28

    一.树链剖分的概念 树链剖分是一种对树进行划分的算法,将树划分为若干个链,以便维护树上路径的信息。 也就是说,我们将树划分为若干个线性结构,使用一些数据结构来维护它,如:树状数组,线段树,splay等。 二.树链剖分的作用 前面我们提到,我们将树划分为多个线性结构,用数据结构来维护它,所以

  • 树链剖分板子2021-07-19 09:00:25

    \(n\) 个点, \(m\) 个操作数, 根结点为 \(R\), 取模数为 \(mod\)。 输入一颗树。 支持的操作: 把 \(x\) 点的点权增加(或修改)\(y\)。 将树从 \(x\) 到 \(y\) 结点最短路径上所有节点的值都加上 \(z\)。 询问某个节点 \(x\) 到 \(y\) 节点的路径中所有点的点权和 (或maxn)。 把 \(x\)

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有