我亲爱的学姐冒险跑去为我们送正解 但是,,,, 阿龙粗现了! cao,, 考场期望得分:20   实际得分:20 Problem A. 最近公共祖先 (commonants.c/cpp/pas) 最近公共祖先(Lowest Common Ancestor,LCA)是指在一个树中同时拥有给定的两个点作为后 代的最深的节点.为了学习最近公共祖先,你得到了一个层数为 n + 1 的满二叉树,其中根节点的深度为 0,其他节点的深度为父节点的深度 +1 .你需要求出二叉树上所有点对 (i,j),(i,j…
题目: 再次感激土蛋 #include <bits/stdc++.h> using namespace std; typedef long long ll; ; ll C[][]; void pre(){ C[][] = ; ; i <= ; i ++){ C[i][] = ; ; j <= i; j ++){ C[i][j] = (C[i - ][j - ] + C[i - ][j]) % mod; } } } int n, m, c; ]; ll f[][][]; ll g[]…
题目:   代码~:感谢土蛋 #include <iostream> #include <cstring> #include <cmath> #include <cstdio> #include <algorithm> #include <queue> #include <vector> #include <map> #include <complex> #define lc k <<…
一.原生JS快捷的尺寸(属性)(注意这些属性的结果 不带PX单位) clientWidth/clientHeight  =====> 获得元素content+padding的宽/高: offsetWidth/offsetHeight =====>获得元素content+padding+border的宽/高: clientLeft/clientTop                              =====>左/上边框的距离: offsetLeft/offsetTop     …
题目链接 题目大意 求每个点对的lca深度的和 以每一层分析,得出通式 由于1e9的数据范围要化简表达式得到O(能过) 瞎搞后就是2^(2n+2)-(4n+2)*2^n-2 code: #include<bits/stdc++.h> using namespace std; const long long mod = 1e9+7; long long n; long long ksm(long long aa,long long b) { long long ans=1; while(b) {…
Problem A. 最近公共祖先 (commonants.c/cpp/pas) 注意 Input file: commonants.in Output file: commonants.out Time Limit : 0.5 seconds Memory Limit: 512 megabytes 题面 最近公共祖先\(\text{(Lowest Common Ancestor,LCA)}\)是指在一个树中同时拥有给定的两个点作为后 代的最深的节点. 为了学习最近公共祖先,你得到了一个层数为\…
思路分析:思路应该比较简单也很容易想的来,就是比较两个节点的最近的祖先节点,要对每个节点依次记录下他的所有祖先节点,包括其自己,因为自己也算自己的祖先节点,这一点题目中没有明确指出 所以比较坑. 我们可以用一个数组表示某个节点的父节点是谁,在判断的时候顺着数组遍历下去就能达到根节点1,并依次记录下该节点的所有的祖先节点.再与另外一个节点的所有的祖先进行比较. Problem C. 最近公共祖先  题目描述  给出一棵有N个节点的有根树TREE(根的编号为1),对于每组查询,请输出树上节点u和v的…
Day 5 杨思祺(YOUSIKI) 今天的难度逐渐上升,我也没做什么笔记 开始口胡正解 今天的主要内容是最小生成树,树上倍增和树链剖分 最小生成树 Prim 将所有点分为两个集合,已经和点 1 连通的集合 S.未和点1 连通的集合 T计算集合 T 中每个点 u 和集合 S 的距离,d_u=min<u,v>∈E,v∈S{w_u,v } 选取集合 T 中距离 S 最近的点 u,选中对应的边,加入集合 S 重复上面的过程,直到所有点都被加入集合 S 朴素写法时间复杂度较劣,可以采用堆优化至 O((…
题目描述 YJC最近在学习树的有关知识.今天,他遇到了这么一个概念:最近公共祖先.对于有根树T的两个结点u.v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u.v的祖先且x的深度尽可能大.YJC很聪明,他很快就学会了如何求最近公共祖先.他现在想寻找最近公共祖先有什么性质,于是他提出了这样的一个问题:n层的满k叉树T,求对于每一对(i,j)(1≤i,j≤T的点数),LCA(T,i,j)的深度的和是多少.这个数字n层的满k叉树指一棵带标号的有根树,深度为i(0≤i 数据范围 ​对于30%…
我又被虐了... A. 最长不下降子序列 考场打的错解,成功调了两个半小时还是没A, 事实上和正解的思路很近了,只是没有想到直接将前$D$个及后$D$个直接提出来 确实当时思路有些紊乱,打的时候只是将前两个及后两个循环节提出来, 因为该题中$D$的范围很小,因此最长公共子序列中最多只有$D$个不同的数 所以我们可以想到中间的一段相同的数一定是可以移成中间的一段数,本质是一样的 B. 完全背包问题 没想到是到图论题啊啊 考虑到$w$的范围很大,然而$v$的范围很小,于是我们开始转化原来的$DP$方…
POJ 1330 Nearest Common Ancestors / UVALive 2525 Nearest Common Ancestors (最近公共祖先LCA) Description A rooted tree is a well-known data structure in computer science and engineering. An example is shown below: In the figure, each node is labeled with an…
题目地址:http://poj.org/problem?id=1330 Sample Input 2 16 1 14 8 5 10 16 5 9 4 6 8 4 4 10 1 13 6 15 10 11 6 7 10 2 16 3 8 1 16 12 16 7 5 2 3 3 4 3 1 1 5 3 5 Sample Output 4 3 n个节点.n-1条边,生成的一定是一棵树.找到最后的那组x y的最近的公共祖先.并查集思想实现的LCA 节点编号为:1-->n 代码: #include <…
How far away ? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 9097    Accepted Submission(s): 3171 Problem Description There are n houses in the village and some bidirectional roads connecting…
本文是网络资料整理或部分转载或部分原创,参考文章如下: https://www.cnblogs.com/JVxie/p/4854719.html http://blog.csdn.net/ywcpig/article/details/52336496 https://baike.baidu.com/item/最近公共祖先/8918834?fr=aladdin 最近公共祖先,简称LCA(Lowest Common Ancestor): 所谓LCA:是当给定一个有根树T时,对于任意两个结点u.v,找…
最近公共祖先LCA 双链BT 如果每个结点都有一个指针指向它的父结点,于是我们可以从任何一个结点出发,得到一个到达树根结点的单向链表.因此这个问题转换为两个单向链表的第一个公共结点(先分别遍历两个链表得到它们的长度,并求出两个长度之差.在长的链表上先遍历若干个点之后,再同步遍历两个链表,知道找到相同的结点,或者一直到链表结束). BST 不用递归recursive,迭代iterative就行 public int query(Node t, Node u, Node v) { int left…
Nearest Common Ancestors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 27316   Accepted: 14052 Description A rooted tree is a well-known data structure in computer science and engineering. An example is shown below:  In the figure, eac…
转载请注明出处:http://blog.csdn.net/ns_code/article/details/28113959 剑指offer上的最后一题了,一个递归函数调了一下午,才得到正确的结果. 题目描写叙述: 给定一棵树,同一时候给出树中的两个结点,求它们的最低公共祖先. 输入: 输入可能包括多个測试例子.对于每一个測试案例,输入的第一行为一个数n(0<n<1000),代表測试例子的个数.当中每一个測试例子包括两行,第一行为一个二叉树的先序遍历序列,当中左右子树若为空则用0取代,当中二叉树…
Q:为什么我在有些地方看到的是最小公共祖先? A:最小公共祖先是LCA(Least Common Ancestor)的英文直译,最小公共祖先与最近公共祖先只是叫法不同. Q:什么是最近公共祖先(LCA)? A:最近公共祖先的概念是很好理解的.首先,你需要脑补出一棵树(它可以是二叉树,也可以是多叉树.)之后,请你再在你脑补出的树上任取两个点.每个点都可以到达树根,且到达的路径是唯一的,既然两个点都可以到达树根,那么根无疑是这两个点的公共祖先.然而,根却不一定是这两个点的最近公共祖先,相反,离根距离…
寻找最近公共祖先,示例如下: 1 /           \ 2           3 /    \        /    \ 4    5      6    7 /    \             \ 8    9           10 LCA(8,9)=4; LCA(5,8)=2; LCA(10,4)=1 思路一: 递归法 1.如果有一个结点是树的根结点,则必定不存在公共祖先:遍历二叉树每个结点,检查其左右子树是否包含指定的两个结点: 2.遍历二叉树每个结点,检查其左右子树是否包…
Nearest Common Ancestors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 18136   Accepted: 9608 Description A rooted tree is a well-known data structure in computer science and engineering. An example is shown below: In the figure, each…
Luogu 2245 星际导航(最小生成树,最近公共祖先LCA,并查集) Description sideman做好了回到Gliese 星球的硬件准备,但是sideman的导航系统还没有完全设计好.为了方便起见,我们可以认为宇宙是一张有N 个顶点和M 条边的带权无向图,顶点表示各个星系,两个星系之间有边就表示两个星系之间可以直航,而边权则是航行的危险程度. sideman 现在想把危险程度降到最小,具体地来说,就是对于若干个询问(A, B),sideman 想知道从顶点A 航行到顶点B 所经过的…
POJ 1986 Distance Queries / UESTC 256 Distance Queries / CJOJ 1129 [USACO]距离咨询(最近公共祖先) Description Farmer John's cows refused to run in his marathon since he chose a path much too long for their leisurely lifestyle. He therefore wants to find a path…
1681 公共祖先 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题   有一个庞大的家族,共n人.已知这n个人的祖辈关系正好形成树形结构(即父亲向儿子连边). 在另一个未知的平行宇宙,这n人的祖辈关系仍然是树形结构,但他们相互之间的关系却完全不同了,原来的祖先可能变成了后代,后代变成的同辈…… 两个人的亲密度定义为在这两个平行宇宙有多少人一直是他们的公共祖先. 整个家族的亲密度定义为任意两个人亲密度的总和. Input 第一行一个数n(1<=n<=10000…
[试题描述] 求二叉树中任意两个节点的最近公共祖先也称为LCA问题(Lowest Common Ancestor). 二叉查找树 如果该二叉树是二叉查找树,那么求解LCA十分简单. 基本思想为:从树根开始,该节点的值为t,如果t大于t1和t2,说明t1和t2都位于t的左侧,所以它们的共同祖先必定在t的左子树中,从t.left开始搜索:如果t小于t1和t2,说明t1和t2都位于t的右侧,那么从t.right开始搜索:如果t1<t< t2,说明t1和t2位于t的两侧,那么该节点t为公共祖先. 如果…
How far away ? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3653    Accepted Submission(s): 1379 Problem Description There are n houses in the village and some bidirectional roads connecting…
题目链接 Description Farmer John's cows refused to run in his marathon since he chose a path much too long for their leisurely lifestyle. He therefore wants to find a path of a more reasonable length. The input to this problem consists of the same input…
这篇博客对Tarjan算法的原理和过程模拟的很详细. 转载大佬的博客https://www.cnblogs.com/JVxie/p/4854719.html 第二次更新,之前转载的博客虽然胜在详细,但其实还是对递归,集合划分,查找还是有些抽象,刚刚恰好看了千千大佬的一篇博客,他在讲解Tarjan算法的时候,用了不同的颜色来区别不同的集合,我觉得这一点非常的好,现在我自己也对Tarjan算法有了一些理解,使用DFS的目的首先是递归中‘递’过程,不断深搜到底:接着回溯使用并查集划分集合,要找LCA的…
HDU 2586 How far away ? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 11320    Accepted Submission(s): 4119 Problem Description   There are n houses in the village and some bidirectional roads…
A - Nearest Common Ancestors Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%lld & %llu Submit Status Description A rooted tree is a well-known data structure in computer science and engineering. An example is shown below: In the figu…
剑指Offer - 九度1509 - 树中两个结点的最低公共祖先2014-02-07 01:04 题目描述: 给定一棵树,同时给出树中的两个结点,求它们的最低公共祖先. 输入: 输入可能包含多个测试样例.对于每个测试案例,输入的第一行为一个数n(0<n<1000),代表测试样例的个数.其中每个测试样例包括两行,第一行为一个二叉树的先序遍历序列,其中左右子树若为空则用0代替,其中二叉树的结点个数node_num<10000.第二行为树中的两个结点的值m1与m2(0<m1,m2<…