void dfs(int x,int root){//预处理fa和dep数组 fa[x][0]=root; dep[x]=dep[root]+1; for(int i=1;(1dep[b])swap(a,b); for(int i=20;i>=0;i--){ if(dep[fa[b][i]]>=de... ...
分类:
其他好文 时间:
2019-09-05 13:33:23
阅读次数:
89
题意:一张n节点连通无向图,n-1条树边,m条非树边。若通过先删一条树边,再删一条非树边想操作 将此图划分为不连通的两部分,问有多少种方案。 利用LCA整好区间覆盖,dfs用来求前缀和 需要注意的是,覆盖数为1的时候才可以选择哦! 覆盖数为0,代表可以直接拆开 ...
分类:
其他好文 时间:
2019-09-02 20:56:53
阅读次数:
113
例题 : https://www.luogu.org/problem/P3379 算法: 首先我们能想出一种暴力算法:先把深度高的点跳到和深度低的点的同一层,然后他们俩一起往上跳,如果两个点相遇了,当前点就是他们的最近公共祖先。但可惜会超时,于是我们考虑一下优化。 优化: 我们可以把跳的过程优化一下 ...
分类:
其他好文 时间:
2019-09-02 19:22:45
阅读次数:
96
Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST. According to the definition of LCA on Wikipedia ...
分类:
其他好文 时间:
2019-09-02 09:33:29
阅读次数:
78
1、List,Set都是继承自Collection接口,Map则不是 2、List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉,(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的,加入Set 的 ...
分类:
编程语言 时间:
2019-09-01 10:36:42
阅读次数:
87
"洛咕" 给定一棵$n(na[2] ... a[n]$,求每个点被经过了多少次. 分析:树上差分中的点差分.还是先跑一遍DFS预处理出LCA,然后对于每一对$a[i],a[i+1]$按照点差分的常规操作处理即可.然后再跑一遍DFS向上回溯时累加就好.最后因为对于中间的$i(2 include inc ...
分类:
其他好文 时间:
2019-08-31 17:14:53
阅读次数:
67
Count on a tree SPOJ 主席树+LCA(树链剖分实现)(两种存图方式) 题外话,这是我第40篇随笔,纪念一下。 include include include using namespace std; const int maxn=1e5+100; struct node{ int ...
分类:
其他好文 时间:
2019-08-29 23:56:56
阅读次数:
225
[HEOI2012]旅行问题 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2746 题解: 这个是讲课时候的题。 讲课的时候都在想怎么后缀自动机.... 当然是能做啦,$SAM$这么强。 实际上是个$AC$自动机,按照题目模拟就行了。 ...
分类:
其他好文 时间:
2019-08-27 23:04:10
阅读次数:
110
正解贪心考场只骗到了70分 做法一: 现将没有限制的边缩掉然后连边, 这样我们直接采用贪心的做法,因为每个边最多只会被反一次, 那么从叶子节点向上对于一个需要修改的边没直接令他向上直到不能修改 注意处理连在lca上有两条链的现象 1 #include<bits/stdc++.h> 2 #define ...
分类:
其他好文 时间:
2019-08-27 22:53:48
阅读次数:
150
什么是树链剖分? 树链剖分说白了就是将树的节点按照某种顺序编号,使其在特殊的链上编号连续(类似区间),方便用数据结构维护。 如何树链剖分? 树链剖分一般分为重链剖分和长链剖分,这里只介绍重链剖分(我也只会重链剖分)。 重链剖分中有几个概念: 如图所示,蓝色的边为重边,绿色的节点为重儿子。 树链剖分的 ...
分类:
其他好文 时间:
2019-08-27 12:23:27
阅读次数:
74