lct+并查集 联赛之后忘了很多东西 复习一下 这并不是一棵树,所以我们不能直接上lct 但是把双联通分量缩了以后就是一棵树了 怎么缩呢 就是把splay拆了合并到一个点上 连通性和双联通分量拿两个并查集维护 access的时候x=find(fa[x]) #include<bits/stdc++.h ...
分类:
其他好文 时间:
2018-01-05 22:05:15
阅读次数:
225
回文自动机上dp f[x]表示形成x代表的回文串所需的最小步数, 若len[x]为奇数,f[x]=len[x],因为即使有更优的,也是直接添加,没有复制操作,那样就不用从x转移了。 若len[x]为偶数,f[x]=min(f[fa[x]]+1,len[x]/2-len[fro[x]]+f[fro[x ...
分类:
其他好文 时间:
2018-01-03 17:28:17
阅读次数:
93
1、什么是 FastDFS FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。 2、FastDFS架构 Fa ...
分类:
其他好文 时间:
2018-01-02 21:21:35
阅读次数:
147
裸题 cpp include include using namespace std; typedef long long ll; int n, m, ecnt, hea[100005], dep[100005], top[100005], idx[100005], cnt; int fa[1000 ...
分类:
其他好文 时间:
2018-01-02 21:16:24
阅读次数:
144
一、LCA的定义: 在一棵树上,点u到点v之间的路径最短的那个节点就是lca(u,v) 二、倍增思想: 我们定义fa[i][j]表示节点i往上跳跃2^j次所到达的节点标号,则有结论: 1.因为2^(j-1)+2^(j-1)=2^,所以fa[i][j]=f[i][j-1]*2; 2.dep[i]表示节 ...
分类:
编程语言 时间:
2017-12-31 23:31:16
阅读次数:
204
题目: 求树上两点之间第k小点权 题解: 对每个节点到根节点的路径建一棵线段树,这样每个点的线段树都从他父亲得到 对于询问(u,v),sum[u]+sum[v]-sum[lca]-sum[fa[lca]]可以表示u到v的路径 ...
分类:
其他好文 时间:
2017-12-31 20:56:43
阅读次数:
159
``` include define N 300005 using namespace std; int n,m,val[N]; struct Link_Cut_Tree{ int top,c[N][2],fa[N],xr[N],q[N],rev[N]; inline void pushup(int ...
分类:
其他好文 时间:
2017-12-30 21:27:46
阅读次数:
161
[BZOJ][1] [Luogu][2] 题目不放了 题解 这道题没有题解 仅此 code cpp include include include using namespace std; define inf 2e9 const int _ = 500050; int n,m,fa[_],ls[_ ...
分类:
其他好文 时间:
2017-12-30 18:11:38
阅读次数:
117
链接 "BZOJ 3631" 题解 看起来是树剖?实际上树上差分就可以解决…… 当要给一条路径(u, v) +1的时候,给d[u] += 1, d[v] += 1, d[lca(u, v)] = 1, d[fa[lca(u, v)]] = 1。 注意这道题中路径的终点是不 +1的。 c++ incl ...
分类:
其他好文 时间:
2017-12-28 21:42:27
阅读次数:
168
咱可以差分一下,把$u-v$这条路径上的$z$都加$1$变成$u$和$v$的$z$加$1$,$lca$和$fa_{lca}$的$z$减$1$。 用线段树实现最大值的查询,最后$dfs$自底向上一路合并并查询即可。 先开始线段树数组开小了,$RE$了一次。 ...
分类:
其他好文 时间:
2017-12-27 14:21:37
阅读次数:
139