ICode9

精准搜索请尝试: 精确搜索
  • 【二叉搜素树的构建(根据前序序列优化)、LCA(最近祖先结点)】1143 Lowest Common Ancestor (30 分)2021-09-23 23:32:34

    1143 Lowest Common Ancestor (30 分) 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 prope

  • P3379 -【模板】最近公共祖先(LCA)2021-09-21 22:02:53

    题目链接:点击进入 题目 思路 倍增求lca( 最近公共祖先 ) 代码 // Problem: P3379 【模板】最近公共祖先(LCA) // Contest: Luogu // URL: https://www.luogu.com.cn/problem/P3379 // Memory Limit: 500 MB // Time Limit: 1500 ms // // Powered by CP Editor (https://cpedi

  • 【图论】倍增LCA(1/4)2021-09-18 13:35:16

    倍增LCA B站UP主 LCA问题 在一棵树中求某两个结点的最近的公共祖先(LCA) (两个结点向上去找到去最近的公共祖先) LCA的大致流程 第一步——修正 将两个点修正到同一深度(并不是同一位置只是同一层) 在修正的过程中可能遇到的两种情况 两个点中的其中的一个点并非是其他那个点的祖先

  • BZOj #4771. 七彩树(主席树+dfn序+lca)2021-09-14 18:06:11

    BZOj #4771. 七彩树 descriptionsolutioncode description 给定一棵n个点的有根树,编号依次为1到n,其中1号点是根节点。每个节点都被染上了某一种颜色,其中第i个节点的颜色为c[i]。如果c[i]=c[j],那么我们认为点i和点j拥有相同的颜色。定义depth[i]为i节点与根节点的距离,为了

  • 恩欧挨批模拟式题-502021-09-11 12:00:38

    水博客太快乐了 RT 有好几场模拟赛的博客没有写,原因是前段时间认为写博客貌似没有什么用,不如用写博客的时间去看看一些奇奇怪怪的题和其他知识点。 然而事实证明水博客还是很有必要的。 考场 发现 \(T1\) 貌似很好写,和一道叫弹飞绵羊的题很像,只不过被搬到了树上,然而弹飞绵羊是一道

  • 倍增LCA模板&ybt树上距离2021-09-07 09:00:44

    用到的各个数组的意义 anc[i][j]表示从点i向根节点走(2^j)步到达的点的编号 dep[i]表示点i的深度 dis[i]表示点i到根节点之间的距离(i到根节点的简单路径上边的权值之和) 算法分析: (1)题目给出了一颗无根树,因此我们建双向边,并任意选一个点作为根节点(我选择1) (2)LCA的路径分解性质: 由于点x

  • 洛谷P42162021-09-05 10:33:00

    算法:树状数组+离线思想+倍增LCA 时间复杂度:\(O(nlogn)\)(假设点数,边数与询问数相同) 第一问显然,为两者距离加\(1\),可以用LCA算出。(加\(1\)是因为算的是点的个数,而两者距离则是边的个数) 第二问,设当前有一个询问\((x,y,c)\),当前时间为\(now\),考虑什么点才会对这个询问产生贡献。 不难

  • 观察2021-09-04 23:04:13

    题目大意 给出一颗以 \(1\) 为根且有 \(n\) 个节点的树,一开始每个节点都是一颗棋子,一面白一面黑,白色的面朝上。 接下来就 \(q\) 次操作,操作分两种: \(0\) 操作,将一颗棋子翻转。 \(1\) 操作,询问一颗棋子与所有面朝上为黑色的棋子的 LCA 最深LCA 的编号(若当前没有黑棋子输出 \(0\)

  • P4211 [LNOI2014]LCA2021-09-03 19:00:19

    如果出现某些询问一堆东西的和的时候(如LCA的深度和),我们可以考虑不要把这些东西每一个都全部求出来,而应该考虑合并这些询问然后一次性询问他们的和。(例如用树剖转化为区间加和和区间询问) 具体思路见hzw博客 #include<iostream> #include<cstdio> #include<cstring> #include<algori

  • 虚树2021-08-30 12:34:26

    虚树是什么 对于一棵树,如果我们多次查询,第 \(i\) 次查询,给出树上的 \(k_i\) 个节点,查询它们公共的信息、互相的贡献等等。每次 dfs 整棵树,时间复杂度是 \(O(nT)\) 的。但是如果我们每次查询把无用的节点删除,只保留 \(k_i\) 个节点以及他们的 lca,那么最多会有约 \(2k_i\) 个节点,再

  • 回文树(并查集)(倍增)(LCA)(ST 表)2021-08-24 09:00:18

    回文树 题目大意 给你一棵树,然后你要给每个点给上一个字母。 有一些限制条件,要求某一段路径在填好之后是一个回文串。 问你总有有多少种方案满足限制条件。 思路 首先不难从回文串中看出它就是让一些位置规定要字母相同。 那关系之间就只有相同和任意。 那你就需要找到有多少互补

  • 2021.8.22北高暑训2021-08-22 23:31:41

    上午主要巩固了一下所学知识 然后是与zx同学共同探讨树剖LCA 这时zx同学问了个问题:树剖LCA和倍增LCA有什么区别?? 我思考了一下,便说:倍增好打[doge] 下午,写了一套提高组初赛的模拟题 拿了61.5分,但高一很多学长都80,90分,看来还要多努力. 今天又TM是开森的一天呢!

  • 洛谷 P5559 失昼城的守星使2021-08-22 07:32:52

    Problem: 给定一个无向图,n个点,n-1条边,每个点有一个初始状态(标记/未标记),q个操作,每次操作修改一个点的状态(状态取反)/询问所有标记点到x->y的简单路径的距离之和。 Solution: 首先找到x->y的简单路径,然后求标记节点u到这条链的距离(u到LCA的距离减去u到LCA的路径与链的重合部分的长度),最

  • 倍增LCA来了!2021-08-21 21:33:00

    2021.8.21 北中集训 上午,学习了倍增求LCA 总的来说,思路很容易理解,但代码要下点功夫(费脑). 特别是预处理之后的上跳操作看了小久才理解了. 下午,写了一些初赛的题与LCA的题 总的来说还不错.

  • CF235D-Graph Game【LCA,数学期望】2021-08-21 15:31:56

    正题 题目链接:https://www.luogu.com.cn/problem/CF235D 题目大意 给出一棵基环树,每次随机选择一个点让权值加上这个点的连通块大小然后删掉这个点。 求删光所有点时期望权值。 \(1\leq n\leq 3000\) 解题思路 先找到环,然后考虑暴力枚举点对\((x,y)\)计算贡献,即统计在\(x\)删除

  • PAT (Advanced Level) Practice 1151 LCA in a Binary Tree (30 分) 凌宸16422021-08-20 02:31:31

    PAT (Advanced Level) Practice 1151 LCA in a Binary Tree (30 分) 凌宸1642 题目描述: 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. Given any two nodes in a binary tree, you are supposed

  • PAT (Advanced Level) Practice 1143 Lowest Common Ancestor (30 分) 凌宸16422021-08-19 01:01:04

    PAT (Advanced Level) Practice 1143 Lowest Common Ancestor (30 分) 凌宸1642 题目描述: 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

  • NOIP模拟432021-08-18 19:03:49

      考场正解,可惜写挂了。   考虑模拟。   考虑如何最大化一个士兵的作用。   一个士兵首先肯定是一次性走到叶子是最优的,不然会有没有必要的重复路径。   先递归至叶子,然后回溯时将回溯到的节点设为\(lca\)。   然后处理\(lca\)的儿子。   非叶子节点会在向叶子走时

  • 2021/8/17随笔2021-08-17 15:01:43

    询问树上a到b,c到d的两条路径是否相交如果相交,记 x=lca(a,b),y=lca(c,d),则必有x在c~d路径上或y在a~b路径上若交点是树上最高的交点,并且不是lca,说明这条链向上还有在链上的父节点,两链都不是lca,并且是树上最高的交点,说明,这交点上连接着两条不同的父节点,树不可能有两个父节点,所以不可

  • kruskar重构树2021-08-16 21:01:43

    只略略讲一点基本方式与思想了 构建 并查集,边按从小(大)到大(小)加入,建新点,点权为此边权,该点为两点根的父亲。 性质:(此处为最小生成树重构树) 1.lca(u,v)为u到v路径上的最大边权 2.类似大根堆 3.显然的性质,叶子为点,非叶子映射边

  • [题解] CF1540B Tree Array2021-08-12 18:35:01

    [题解] CF1540B Tree Array 期望题,思维题,dp(递推)题,暴力题 传送门 题意 对一棵 \(n\) 个点无根树进行染色操作,染色规则如下: 开始时,等概率地 随机找到一个点将其染色; 然后 等概率地 对 至少一条边连接已染色结点 的未染色结点进行染色。 最终会形成一个染色序列 \(a\),求 \(a\) 中逆

  • luogu P5904 [POI2014]HOT-Hotels 加强版2021-08-08 14:32:39

    题面传送门 这个东西肯定是有一个中转点满足到三个点距离相同。 我们设\(f_{i,j}\)为\(i\)子树内的距离\(i\)为\(j\)的点的个数,\(g_{i,j}\)为\(i\)子树内无序对\((x,y)\)满足\(dist(x,lca(x,y))=dist(y,lca(x,y))=dist(i,lca(x,y))+j\) 这个东西的转移是\(g_{u,i}=g_{v}{i}+f_{u,i

  • lca板子2021-08-06 10:59:30

    #include<bits/stdc++.h> using namespace std; const int N=5e5+10; int head[N]; int n,m,s,f[N][30],lg[N],h[N]; ///该结点的深度 ///f[i][j]为i结点向上2^j的祖先 struct node { int to,ne; }bian[N*2]; int tot = 0; void add_edge(int x,int y) { tot++; bi

  • 题解[NOIP2016 提高组] 天天爱跑步2021-08-04 20:02:20

    算是NOIP中比较麻烦的题了,看题解感觉处理的很巧妙 题意就不再赘述了,刚开始的想法是遍历枚举每一条路径,但是无论如何这样做的复杂度最坏都有O(nm) 所以尝试换一种方法,从观察员下手,对于每一个观察员,我们只需要找到每一条路径带给他的贡献 那这个贡献怎么求呢? 对于每一条路径(u,

  • [LOJ#6021]. 「from CommonAnts」寻找 LCR2021-08-03 20:31:46

    [LOJ#6021]. 「from CommonAnts」寻找 LCR 题意 给定一张 \(n\) 个点 \(m\) 条边的无向图,\(q\) 次询问,每次询问 \(A\) 到 \(B\) 的路径上权值最大值的最小值是多少。 题解 我们找出来这 \(n\) 个点的无向图的最小生成树,然后每次相当于在生成树上询问两点路径上最小值,相当于是克鲁

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

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

ICode9版权所有