ICode9

精准搜索请尝试: 精确搜索
  • 点分树学习笔记2022-02-06 23:01:20

    1.0 定义 其实本质也是一种暴力。。 回忆点分治的过程:每次找到当前子树的重心,处理所有经过该重心的路径的答案,然后将其删去,分裂成一些子树,再分别进去递归。 把点分治的过程离线下来,将当前树的重心与上一层的树的重心连边,这样就可以得到一棵树,我们称之为“点分树”。 1.1 应用范围

  • 最近公共祖先(LCA)笔记2022-02-06 12:01:40

    简介 LCA是一种树上问题,为求两个点之间的最近公共祖先。 最近公共祖先就是往上走到最近的点,使得这个点是另两个点的祖先。 模板题 可以看洛谷上的模板题:P3379 【模板】最近公共祖先(LCA) 题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 输入格式 第一行包含

  • 树链剖分求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)的最近公共祖先

  • 【CF983E】NN country2022-02-05 14:02:00

    预处理出点 \(u\) 往上坐 \(2^i\) 次车后能到达的深度最浅节点 \(f_{u,i}\),查询时把两个点在深度大于 lca 时一直倍增向上跳,这时只需要查询是否有车直接经过两点。相当于这辆车的两个端点分别在这两点的子树内,用 dfs 序将其转化为二位数点即可。二位数点可以用桶排。 考虑如何预处

  • 最近公共祖先(LCA)2022-01-29 12:06:44

    一.暴力解法(一) 会超时 对于点x,y。向上搜索点x节点的父节点,并将搜索到的父节点依次标记为走过,然后再搜索y节点的父节点,当搜索到第一个已经标记了的节点时,即为他们的最近的公共祖先。 题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 输入格式 第一行

  • Atcoder 试题选做2022-01-26 10:31:36

    [ARC087D] Squirrel Migration 瞎扯:考虑 \(dis(x,y)=dep_x+dep_y-2dep_{lca(x,y)}\),于是让 \(lca\) 最小即可。 易知如果根节点的最大的子树不超过一半,那么所有的 \(lca\) 都可以在根。如果大于一半呢,递归这棵子树吗?好像不太好做的样子。 正解:我在想马呢。直接选中心做根,完事了。

  • 1143 Lowest Common Ancestor (30 分)(二叉查找树)2022-01-22 23:31:56

    The lowest common ancestor (LCA) of two nodes U and V in a tree is the deepest node that has both U and V as descendants. A binary search tree (BST) is recursively defined as a binary tree which has the following properties: The left subtree of a node con

  • LG7737 [NOI2021]庆典2022-01-16 22:36:31

    [NOI2021] 庆典 前言 调了 2 天才过掉。。。 仔细想想,整个思考过程还是很有借鉴意义的。 解题思路 我们拿到的是一个有意思图,我们考虑一步一步将图转化。最好处理的图类型是什么?是树,我们能否把原图转化为在叶向树上的问题呢? step 1 我们容易想到将一个有向图通过缩点转化为 DAG。

  • LCA2022-01-09 19:34:00

    LCA(公共父节点)   求LCA的方式有许多,如一般解法,Tarjan,ST表等。这里介绍一下前两种。 问题概述 一般解法 tarjan   问题概述:已知有一棵树求所问的每两个节点的公共父节点(深度最深),如图所示:求4,5的公共父节点,1和2都是但是相比下2的深度更深因此我们选择2。   题目链接:洛谷P3

  • 最近公共祖先 III——lintcode5782022-01-02 19:00:19

    最近公共祖先 III 题目:最近公共祖先 III 给一棵二叉树和二叉树中的两个节点,找到这两个节点的最近公共祖先LCA。返回 null 如果两个节点在这棵树上不存在最近公共祖先的话。 注意: 这两个节点未必都在这棵树上出现。 每个节点的值都不同 示例: 输入: {4, 3, 7, #, #, 5, 6} 3 5 5 6

  • R数据分析:潜在转化分析LTA的做法和解释(一)2021-12-22 22:00:50

    之前给大家写了很多潜在类别分析的教程Mplus教程:如何做潜在类别分析LCA R数据分析:用R语言做潜类别分析LCA Mplus数据分析:潜在类别分析(LCA)流程(详细版) R数据分析:再写潜在类别分析LCA的做法与解释,今天继续给大家拓展一步。 今天要介绍的就是潜在转换分析,这个东西就是LCA的纵向版

  • [Leetcode 235/236]LCA二叉树最近公共祖先Lowest Common Ancestor of a Binary Tree2021-12-04 03:00:06

    题目 给定二叉树和两个点,求两点的LCA最近公共祖先 Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes p and q a

  • Nearest Common Ancestors(LCA)(最近公共祖先LCA)2021-11-12 19:03:32

    题目链接: http://poj.org/problem?id=1330 这个问题做法比较多,记录下自己的写法。 1,首先将数据存储在邻接表里,先将数据按照并查集存储,然后将叶子节点的深度全部神深搜出来,存储到深度数组中。 2,然后就是具体做法: 先判断两个数是否在一棵树的同一层上,若不是先调整到同一层上

  • LCA2021-11-02 13:03:54

    分析 LCA 就是求两个点的最近公共祖先,用倍增的思想,现预处理一下节点走到的地方,然后再求lca #include<bits/stdc++.h> using namespace std; #define int long long const int N=5e5+10; int fa[N][21],he[3*N],ne[3*N],to[3*N]; int dep[N]; int dex; void add(int x,int y) {

  • NOIP2016&洛谷P1600:天天爱跑步2021-11-01 23:03:25

    文章目录 解析sol1:树剖+mapsol2:树剖+离线sol3:dfs维护树状数组+差分 解析 个人认为本题比同年的逛公园可做许多 本题的一个关键是:把慢跑者 ( u , v

  • [学习笔记] 树上差分2021-10-28 09:04:02

    前置知识 首先回忆以下差分数组: \(b[1]=a[1]\) \(b[i]=a[i]-a[i-1](2\leq i\leq n)\) 如果要在\(l,r\)区间\(+k\),就在\(l\)加\(k\) 在\(r+1\)处\(-k\) 点的差分 如果我们要点\(u,v\)之间的路径加上某一个数\(d\),直接\(dfs\)的话,肯定会\(T\)飞,这时我们就可以用树上差分来作,类比一下

  • 最近公共祖先 LCA(Least Common Ancestors)2021-10-21 10:02:19

    倍增算法求最近公共祖先 一、概述 在图论和计算机科学中,最近公共祖先(英语:lowest common ancestor)是指在一个树或者有向无环图中同时拥有v和w作为后代的最深的节点。在这里,我们定义一个节点也是其自己的后代,因此如果v是w的后代,那么w就是v和w的最近公共祖先。 --维基百科 上

  • 牛客提高组模拟4 快速访问——一道树剖“板子”题2021-10-12 21:02:51

    link 为什么我会把树剖的常见 trick 忘了啊。。。 trick 1:lca -> x 向上跑 + y 向上跑 trick 2:深度可以用这个点到根点的个数表示 化简一下:\(ans=(d_i+d_j-2d_{LCA(i,j)})^2=d_i^2+d_j^2+4d^2_{LCA(i,j)}+2d_id_j-2d_id_{LCA(i,j)}-2d_jd_{LCA(i,j)}\) 考虑怎么修改/统计答案。第

  • NOIP 模拟九 考试总结2021-10-02 06:31:27

    T1 考场上先干的T2,最后慌慌张张没去想正解,打算把树建起来,拿70分的部分分,于是写树剖LCA,板子好像忘了,回忆了好久还模拟了好几遍才打对树剖LCA............期望70,结果0.考试结束后一模一样的代码交上去就70,考试的时候全部TLE,玄学............. 斐波那契找性质,推60个数,加前

  • 虚树 virtual-tree2021-10-01 15:00:57

    我们发现,如果一棵树中真正需要处理的点很少,而总共点数很多时,可以只处理那些需要的点,而忽略其他点。 因此我们可以根据那些需要的点构建虚树,只保留关键点。 oi-wiki上对虚树的介绍 我们根据一下方式建立虚树: 现将所有需要处理的关键按照欧拉序排序。 用一个栈维护一条从根节点

  • CF1338B Edge Weight Assignment2021-09-30 11:02:22

    传送门 题面翻译见洛谷传送门。 这种偏向构造的题真的不好想啊,凭什么定位在绿题…… 首先考虑最少需要多少种不同的权值。 如果任意两个叶子节点之间的距离都是偶数或者奇数,那么所有边权只要赋同一个值就能满足条件。 那么如果既有偶数又有奇数呢?这我就想不到了。按题解的思路,

  • YBTOJ&洛谷P4074:糖果公园(树上莫队)2021-09-26 21:02:21

    文章目录 解析代码 所谓树上莫队,就是在树上的莫队 (逃) 传送门 解析 似乎就是树上的这道题 考虑如何转化为序列问题呢? 考虑dfs序 但是又一个问题。。。 似乎这条链的dfs序不连续啊 树剖一下就好啦 考虑更阳间的方法 求出这棵树的欧拉序,在这个欧拉序上询问 那么我们发现,

  • [做题记录-数据结构] Luogu5210 [ZJOI2017]线段树2021-09-26 12:34:54

    很久没有过的对着题解抄的题了。( 手玩一下之后会发现我们的区间会在第一次向两边递归的时候分开, 然后剩下的就是对是右儿子的左链求和以及对左儿子的右链求和。那么应该可以用倍增之类的东西直接硬维护。 然后点开题解发现这玩意可以直接使用差分维护。具体来说就是把\(u\)点和\(l

  • Count on a tree II (树上莫队)2021-09-26 01:32:36

    题目链接 题意: 给定一棵\(N\)个节点的树,节点编号从\(1\)到\(N\),每个节点都有一个整数权值。 现在,我们要进行\(M\)次询问,格式为\(u\) \(v\),对于每个询问你需要回答从\(u\)到\(v\)的路径上(包括两端点)共有多少种不同的点权值。 思路: 树上莫队,预处理得到树的欧拉序列。 \(dfs\)序列:是

  • 【初赛解析】2021CSP-S初赛解析(不完全)2021-09-24 21:33:49

    可能陆陆续续补完吧...咕咕咕 先贴一手, AcWing的全解析 完善程序 (2)(RMQ 区间最值问题) 题意描述得非常具体(嗯, 都是我当时在考场上没学的东西) 前置知识 笛卡尔树 欧拉序 ST表 这边贴几个网址吧, 毕竟我本人也就为这个解析刚学. 搜索二叉树-百度百科 笛卡尔树-百度百科 笛卡

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

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

ICode9版权所有