题目链接 题目大意 求每个点对的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) {…
思路分析:思路应该比较简单也很容易想的来,就是比较两个节点的最近的祖先节点,要对每个节点依次记录下他的所有祖先节点,包括其自己,因为自己也算自己的祖先节点,这一点题目中没有明确指出 所以比较坑. 我们可以用一个数组表示某个节点的父节点是谁,在判断的时候顺着数组遍历下去就能达到根节点1,并依次记录下该节点的所有的祖先节点.再与另外一个节点的所有的祖先进行比较. Problem C. 最近公共祖先 题目描述 给出一棵有N个节点的有根树TREE(根的编号为1),对于每组查询,请输出树上节点u和v的…
研究了LCA,写篇笔记记录一下. 讲解使用例题 P3379 [模板]最近公共祖先(LCA). 什么是LCA 最近公共祖先简称 LCA(Lowest Common Ancestor).两个节点的最近公共祖先,就是这两个点的公共祖先里面,离根最远的那个. -- 摘自 OI Wiki 比如下图红.黄两点的LCA就是绿点. LCA的几种实现方式 向上标记法 从 x 点一直向上走直到到达根节点,在走的过程中标记所有经过的点. 从 y 点一直向根节点走,遇到的第一个标记过的点即为两点的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…
The merchant Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 4556 Accepted: 1576 Description There are N cities in a country, and there is one and only one simple path between each pair of cities. A merchant has chosen some paths and w…