摘要:
圆方树 重要的:::注意点权赋值 在一般无向图上使用它 •配合点双连通分量缩点用的 •对于一个dcc,建立一个方点,dcc内所有点向他连边 •割点关联多个dcc,连接多个方点 •这样会形成一棵树,实际上dcc缩点可以有不同的建树方式 圆方树的点数小于 2n,这是因为割点的数量小于 n,所以请注意各种 阅读全文
摘要:
笛卡尔树 介绍 笛卡尔树是形如上图的一棵树,满足 ①堆的性质,如本图,小根堆,儿子的值大于等于父亲的值 ②二叉搜索树性质,即左子树的点key(默认为下标)比根小,右子树的点key(默认为下标)比根大 显然,按中序遍历这棵树,可得原序列 和treap不同的是,树高不保证是log ③询问下标i到下标j之 阅读全文
摘要:
CF869C The Intriguing Obsession 考虑不合法的情况: 1.一个岛连接的两个岛颜色相同。 2.相同颜色的岛之间连接 我们发现第三种颜色不会影响前两种颜色之间的连接,于是我们可以把问题分成3部分, AB,AC,BC,最后相乘。 那么两种颜色之间连接方案数就是下面的公式了: 阅读全文
摘要:
高维前缀和 一维: for(int i=1;i<=n;i++) b[i]=b[i-1]+a[i]; 二维: for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) b[i][j]=b[i-1][j]+b[i][j-1]-b[i-1][j-1]+a[i][j]; 三维 阅读全文
摘要:
集合的所有子集的值的和 【问题】: 给一个集合,包含n个数。 规定集合的值为集合中所有元素的和。 求,该集合的所有子集的值的和。 【数据】: [1, 2] 子集是:[空集], [1], [2], [1, 2] 答案是: 1 + 2 + (1 + 2) = 6; 【分析】: 阅读全文
摘要:
拓扑排序 只针对DAG排序 如果有环,序列长度不为$n$ 时间复杂度$O(n+m)$ 实现: 维护每个点入度,入度为$0$的入队,每次取队首遍历出边,入度$-1$,然后继续让入度为$0$的入队,直到队空 最长路 注意$vis$过$x$才能更新$y$ #include <queue> #include 阅读全文
摘要:
树链剖分——轻重链剖分 blog https://blog.csdn.net/qq_40482358/article/details/89676297 把树上的问题转化成序列问题(然后就快乐线段树维护) 概括一下就是把树划分为若干条链,然后一个链的dfs序是连续的,对于树上两点,我们可以通过跳链直到 阅读全文
摘要:
虚树,是对于一棵给定的节点数为 n的树 T,构造一棵新的树 T' 使得总结点数最小且包含指定的某几个节点和他们的LCA。 虚树是只包含关键点以及关键lca的点,而其他不影响虚树结构的点和边都相当于进行了路径压缩,整颗虚树的规模不会超过关键点数目的两倍. 虚树实际就是为了解决一类树形动态规划问题而诞生 阅读全文
摘要:
树的直径 模板poj1985 树形dp **优点:**可以处理负边权的树 **缺点:**只能求一个树的直径的长度,其他的求不出 不妨设1号节点为根,将树看成有根树; 法1: \(d[x]\) 表示从$x$到以$x$为根的子树的最远距离 \(d[x]=max( d[y]+edge(x,y) );\) 阅读全文
摘要:
dfs序 所以对于一棵树的$dfs$序来说,这个点和他所有的子节点会被存储在连续的区间之中。 所以如果一个点的起始时间和终结时间被另一个点包括,这个点肯定是另一个点的子节点。(括号化定理) 欧拉序有两种形式: 1 在每个结点进和出时加进序列。 2 只要到达每一个结点就把他加进序列。 —— 用于求LC 阅读全文