随笔分类 - 知识点
新的或旧的知识点耶
摘要:上一期 由于上一期过水,只讲了一点点序列的问题,然而在乱逛看题解的时候,发现其实并查集能做到的远远不止图论与有限步骤序列问题,今天就从一(不会讲模板的)开始来记录一下并查集的美妙。 1.入门级别:P1196 [NOI2002] 银河英雄传说 这应该是最基础的运用,利用并查集来维护图的连通性,做一类合
阅读全文
摘要:前置知识:最大权闭合子图。 这是个什么东东呢,它是对于每一个点赋一个值,求一个点集,点集内的所有点都必须包含它的所有后继,使这个点集的和最大。 如以下图: 图中的编号代表点权。 可以知道的是,能选择的点集有:$\left{-3\right},\left{-3,4\right},\left{-3,5\
阅读全文
摘要:传送门 有点难,慢慢做。 1.P2634 [国家集训队]聪聪可可 比板子要简单一点,分治时寻找路径时用桶记录模数为 的个数,再进行 背包即可。 统计答案时由于两点可以互换,所以最后答案为 。 #include<iostream> #in
阅读全文
摘要:这篇博客的练习题题解 1、P3384 【模板】轻重链剖分/树链剖分 模板题,详见此 #include<iostream> #include<cstdio> #include<vector> using namespace std; int n,m,r,p,t[100005],fa[100005],d
阅读全文
摘要:非常有趣的一个知识点。 所谓点分治,也就是在树上进行分治的操作。 分治可以处理许多问题,各种区间类问题很多都可以利用分治思想,例如线段树就是利用分治处理许多区间性问题。 而目前处理树上区间问题学过的只有树剖,但树剖的缺陷性其实很大,当你需要对子树进行合并操作时,树剖会有很大的局限性,因为只有当整棵树
阅读全文
摘要:树链剖分是将一棵树剖分成一条一条链,从而将树上问题转换为序列问题的操作,最常见的是轻重链剖分,这里也注重讲轻重链剖分。 第一步:找重儿子。 对于这棵树,我们想让这棵树被剖分成一棵序列,那么就要先找到每个节点的重儿子。重儿子的定义是以儿子为根的子树大小是所有儿子中最大的。 如本图, 为
阅读全文
摘要:主席树是解决查询历史线段树值的问题的数据结构。 由于改变一个点值时,线段树改变不完全,所以利用一个线段树的空间存储一个历史值是很浪费空间的。 那么此时我们只需要建立一个根节点,对未改变的节点连边,对改变的节点新建节点,连边即可。 本算法思路极其简单,主要看代码实现。 void build(int &
阅读全文