随笔分类 - 

摘要:矩阵树定理 学习资料:OI Wiki 用途与时间复杂度 用于求图(有向图和无向图)的生成树个数计数问题。时间复杂度为 \(\mathcal{O(n^3)}\) ,其中 \(n\) 是图的节点个数。需要掌握求矩阵行列式的方法。 定义与做法 无向图: 定义度数矩阵 \(D(G)\) : \[ D_{i, 阅读全文
posted @ 2020-09-19 16:19 草丛怪 阅读(368) 评论(0) 推荐(0)
摘要:斯坦纳树 学习资料:OI Wiki 问题: 在一个无向带权连通图 \(G=(V,E)\) 中,对点集 \(S\subset V\) 求一边集 \(C\subset E\) ,使得 \(u\in S\) 相互连通且 \(\sum w_c(c\in C)\) 的值最小。 也就是,对一个无向图 \(G\) 阅读全文
posted @ 2020-09-15 22:26 草丛怪 阅读(199) 评论(0) 推荐(0)
摘要:题解:Waterloo2019ICPC D.Deliveries (整除分块+树分块+括号序) 题目链接:cf Waterloo2019ICPC D.Deliveries 题意: 一棵 \(N\) 个顶点的带边权无根树,\(Q\) 个询问。每次询问 \(S\;F\;T\) ,表示从点 \(S\) 到 阅读全文
posted @ 2020-09-13 15:35 草丛怪 阅读(113) 评论(0) 推荐(0)
摘要:动态树(LCT) 学习笔记: Yang Zhe QTREE解法的一些研究 , OIWiki 时间复杂度: \(\mathcal{O(nlogn)}\) 前置知识: splay, 树链剖分 理解 可以简单把 LCT 理解成用一些 Splay 来维护动态的树链剖分,一期实现动态树上的区间操作。 对于每条 阅读全文
posted @ 2020-09-09 09:49 草丛怪 阅读(165) 评论(0) 推荐(0)
摘要:2020牛客多校 A National Pandemic 题意 一棵树 ,三种操作: 1,一个中心城市 x,所有城市 y 的值+=w-dist(x,y) 2,将城市x的值与0取min 3,询问单点的值。 官方题解 对于1操作,我们考虑一次修改对y来说会增加w-dis(x,y) w-dis(x,y)= 阅读全文
posted @ 2020-08-07 21:56 草丛怪 阅读(158) 评论(0) 推荐(0)
摘要:全局平衡二叉树 学习资料:博客1,博客2 注:博客1讲得比较详细,博客2的代码和博客1区别。 时间复杂度:\(\mathcal{O(nlogn)}\) 但是 常数比较大(但也没有LCT那么大)!虽然树链剖分的时间复杂度是 \(\mathcal{O(n logn^2)}\),但是树链剖分有时会更快。复 阅读全文
posted @ 2020-08-07 21:40 草丛怪 阅读(1450) 评论(0) 推荐(2)
摘要:2020 Multi-University Training Contest 2 Count on a Tree II Striking Back 题意: 一棵含 \(n\) 个点的树,树上每个点都有颜色,m个操作,有两种: $1,x,y$ :将节点x的颜色设置为 \(y\) $2,a,b,c,d$ 阅读全文
posted @ 2020-08-07 21:32 草丛怪 阅读(237) 评论(0) 推荐(0)
摘要:kruskal重构树 $\mathcal{O(nlogn)}$ 学习资料: "hwzzyr的博客" 定义?: 在kruskal算法的过程中,把最小生成树的边权改为点权而构建的二叉树。 抛开kruskal算法来讲,对原图(注意,不止对树,图也可以)的边集进行排序,然后将边当成节点建树。 性质: 是一个 阅读全文
posted @ 2020-05-13 19:23 草丛怪 阅读(171) 评论(0) 推荐(0)
摘要:点分治 学习资料:OI WiKi树分治 时间复杂度 \(\mathcal{O(nlogn)}\), ​ 这里是指 $solve(;)$函数需要 \(\mathcal{O(n)}\),再加上分治的 \(logn\)。所以前提是 $solve()$函数的复杂度不要太糟糕。 作用 处理树的大量路径信息。 阅读全文
posted @ 2020-04-27 03:13 草丛怪 阅读(323) 评论(0) 推荐(0)
摘要:树上启发式合并 学习资料: "OI Wiki 树上启发式合并" 时间复杂度:$\mathcal{O}(nlogn)$ 作用: 树上启发式合并 在计算的时候,保留重儿子的子树答案,清除轻儿子子树的带来更新,再将当前树的所有轻儿子影响的更新重新计算合并到重儿子的更新上。用于计算所有子树的答案。 模板: 阅读全文
posted @ 2020-04-09 10:56 草丛怪 阅读(114) 评论(0) 推荐(0)
摘要:LCA的几种求法 1,st表 (最快~ int depth[maxn<<1],id[maxn],rid[maxn<<1],cnt,st[maxn<<1][25]; void dfs(int u,int fa,int d) { id[u]=++cnt;rid[cnt]=u;depth[cnt]=d; 阅读全文
posted @ 2020-02-11 23:04 草丛怪 阅读(256) 评论(0) 推荐(0)
摘要:不做笔记的后果是我完全忘记了我在5个月前就学过点分治(去洛谷做题才发现的)..... 点分治大概是用于树上路径的求解。 点分治分4步走: 1,对当前子树找重心//固定 void getroot(int u,int fa) { siz[u]=1;ms[u]=0; for(int i=0;i<p[u]. 阅读全文
posted @ 2019-10-02 09:58 草丛怪 阅读(176) 评论(0) 推荐(0)
摘要:隔了俩月,有点看不明白这个模板Σ(っ °Д °;)っ 然后就再看了一遍..... 需要注意的是: 一个节点x所在重链的顶端 即 top[x],与x之间的那条链的所有节点 的dfs序是连续的 所以如果节点x的父亲节点fa与x的dfs序 不连续,则top[x]=x 因为 dfs序是以重链为优先确定的。 阅读全文
posted @ 2019-09-13 19:31 草丛怪 阅读(204) 评论(0) 推荐(0)
摘要:下午小细节没处理好,然后WA了。晚上静心改了改就好了。开心! 不过.....499ms? L. Subway Lines 在网上搬了找重心的dfs代码。 得找lca,但是我已经忘了该用什么算法,因为很久之前看的找lca的题/算法,但是太久没用,忘了.... 所以...就没用什么算法模板了。 从重心G 阅读全文
posted @ 2019-09-12 19:47 草丛怪 阅读(171) 评论(4) 推荐(0)