摘要:
割顶:对于无向图G,如果删除某个点u后,连通分量的数目增加, 称u为图的割顶。对于连通图,割顶就是删除之后使图不再连通的点。 割顶的求解依如下定理: 在无向连通图G的DFS树中,非根结点u是G的割顶当且仅当u存在一个子节点v,使得v及其所有后代都没有反向边连回u的祖先(连回u)不算。 算法实现: 采 阅读全文
摘要:
1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 typedef unsigned long long ull; 10 const int x = 123; 11 const int maxn = 4e5 + 10; 12 ... 阅读全文
摘要:
题意:根据m条指令改变排列1 2 3 4 … n ,每条指令(a, b)表示取出第a~b个元素,反转后添加到排列尾部 分析:用一个可分裂合并的序列来表示整个序列,截取一段可以用两次分裂一次合并实现,粘贴到末尾可以用一次合并实现。 翻转可以采用在每个结点上做标记的方法,flip = 1意味着将这棵子树 阅读全文
摘要:
伸展操作:将treap中特定的结点旋转到根 阅读全文
摘要:
离线做法,逆序执行操作,那么原本的删除边的操作变为加入边的操作,用名次树维护每一个连通分量的名次,加边操作即是连通分量合并操作,每次将结点数小的子树向结点数大的子树合并,那么单次合并复杂度O(n1logn2),由于合并之后原本结点数少的子树结点数至少翻倍,所以每个结点最多被插入 logn 次,故总时 阅读全文
摘要:
Treap 是一种通过赋予结点随机权值的一种满足堆性质的二叉搜索树,它很好的解决了二叉搜索树顺序插入组成链式的局限性。 名次树是指在treap的每个结点中添加附加域size,表示以它为根的子树的总结点树。 名次树支持两个操作:Kth(x): 找出第k小(第k大)的元素。 Rank(x): 值x的名次 阅读全文
摘要:
题意: 输入n个序列,求出一个最大长度的字符串,使得它在超过一半的DNA序列中连续出现。如果有多解,按照字典序从小到大输出所有解。 分析:这道题的关键是将多个字符串连接成一个串,方法是用不同的分隔符把所有原串拼接起来。接下来,就可以求这个新串的后缀数组和 height 数组, 然后二分答案,没次只需 阅读全文
摘要:
1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 const int maxn = 200; 8 char s[maxn]; 9 int sa[maxn], t[maxn], t2[maxn], c[maxn]; 10 int n; 11... 阅读全文
摘要:
官方题解: If you choose any n - 1 roads then price of reducing overall dissatisfaction is equal to min(c1, c2, ..cn - 1) where сi is price of reducing by 阅读全文
摘要:
pa[a][j] 表示 a 结点的 2^j倍祖先(j = 0时 为直接父亲,j = 1时为父亲的父亲……) 1.首先预处理出所有结点的深度值dep和父亲结点 2.预处理出所有结点的 2^j 倍祖先 3.查询操作,首先将 a,b中深度较大的结点上升到与深度较小的结点同一深度,然后两个结点同步上移,直到 阅读全文