摘要:
上一期 由于上一期过水,只讲了一点点序列的问题,然而在乱逛看题解的时候,发现其实并查集能做到的远远不止图论与有限步骤序列问题,今天就从一(不会讲模板的)开始来记录一下并查集的美妙。 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 & 阅读全文
摘要:
D1T1:预计紫 D1T2:预计蓝 D1T3:预计紫 D1T4:预计紫 D2T1:P2322 [HNOI2006]最短母串问题(紫) D2T2:预计紫 D2T3:预计蓝 D2T4:预计蓝 D3T1:预计蓝 D3T2:预计紫 D3T3:预计紫 D3T4:2480 [SDOI2010]古代猪文(紫) D 阅读全文