只有三种情况:全是1,有一个2的,只有一个点的 树形dp求最长的1链,或者带一个2的最长1链即可 #include<bits/stdc++.h> #define rep(i,x,y) for(auto i=(x);i<=(y);++i) #define dep(i,x,y) for(auto i=( ...
分类:
其他好文 时间:
2020-05-24 00:13:52
阅读次数:
54
在上一期中,我们了解了余额检查与双重支付,今天来聊一下另一个问题,假设有一个人想要篡改比特币记录,他不可能伪造别人的签名,但是可以删除某一条记录,比如说他本来付给了别人十个比特币,现在他想把这个记录删掉,伪造篡改这条记录,系统如何防止这件事的发生呢? 首先,比特币遵守最长链原则,即以最长的链为主链, ...
分类:
其他好文 时间:
2020-04-14 12:54:54
阅读次数:
102
"CSDN同步" "原题链接" 简要题意: 给定一棵树,求最长的 “挂链” 长度。 挂链定义为:一条链上所有节点与其相连的节点构成的生成树。(非严谨定义)(原题中是 “毛毛虫”,本人以为挂链更形象) 这题有多种做法,这里给出思路,以及其中一种做法的代码。 算法一 注意到,其实我们只需要选出 “最长链 ...
分类:
其他好文 时间:
2020-04-06 15:44:55
阅读次数:
53
题目描述很久以前,T王国空前繁荣。为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市。为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首都直接或者通过其他大城市间接到达。同时,如果不重复经过大城市,从首都到达每个大城市的方案都是唯一的。J是 ...
分类:
其他好文 时间:
2020-04-03 13:51:20
阅读次数:
105
让最大值走得最多就好了,让最大值走最长链的长度,然后把最长链上的点都打上标记,再从所有没有被标记的点里找次长链,让次大值跑这个题我最后一小时写慌了,思路乱了,队友写得很妙,tql #include <iostream> #include <cstdio> #include <queue> #incl ...
分类:
Web程序 时间:
2020-03-25 21:28:44
阅读次数:
91
3.2通过求维护lca的最长链和次长链来求树的直径 3.2通过求维护lca的最长链和次长链来求树的直径 ...
分类:
其他好文 时间:
2020-02-24 15:29:10
阅读次数:
55
前言 树的直径指树上距离最远的两点间的距离,它在树上问题上有许多应用,往往通过树的直径的性质可以将一个高时间复杂度的解法变为线性求解。 树型DP求解树的直径的方法:复杂度 O(N) DP求直径的方法是对于每个点记录这个点子树中的最长链及与最长链处于不同子树中的次长链,用每个点的最长链+次长链更新直径 ...
分类:
其他好文 时间:
2020-02-19 19:03:53
阅读次数:
42
定义: 直径 : 在圆上两点(不相交)之间最远的距离就是我们通常所说的直径。 树的直径 : 树上最远的两个节点之间的距离就被称为树的直径,连接这两点的路径被称为树的最长链。 求法: 1、树形 DP 2、两次 BFS 或者 两次 DFS 算法 1 : 树形 DP 优点 : 可以有效处理 负边权 缺点 ...
分类:
其他好文 时间:
2020-01-27 19:32:04
阅读次数:
117
题意:在一棵树上找三个不同点,使的三点之间的路径通过最多的不同边。 解法:将树看一条长链像有机化学里的结构式,可以肯定长链的两端点(两次dfs找出最长链)是答案中的两点,第三个点有两种情况: 1、没有支链即只有一条长链第三点即为不同于端点的任意一点。 2、有支链,找一条最长的支链的端点(bfs找最长 ...
分类:
其他好文 时间:
2020-01-24 09:27:34
阅读次数:
76
可以通过两次$dfs$或$bfs$求出树的直径,从任意结点出发,搜索得出直径的一个端点,然后从这个端点继续搜索,得出另一个端点,但无法处理负边权 $code$: 也可以用树形$DP$求直径,考虑每个结点$x$,求出经过结点$x$的最长链长度,则树的直径长度就是这些最长链长度的最大值,但无法求出直径的 ...
分类:
其他好文 时间:
2020-01-22 21:47:43
阅读次数:
75