随笔分类 - ACM算法
摘要:势能线段树 什么是势能线段树 所谓势能线段树,是指在懒标记无法正常使用的情况下,暴力到叶子将线段树当成数组一样用进行修改。 大概就是先暴力,在暴力到一个状态的时候再用lazy标记。 D. Lowbit 题意: 一个数组,两个操作 1 L R, add lowbit(ai) each ai in th
阅读全文
摘要:# 虚树 简介 如果题目中有这样子的字眼,给你 q 个询问,每个询问给一些点,这些点的总和不多,但是总的点数很多,意思就是绝大部分点用不到,这样子的情况,就考虑用虚树去优化。 一般的步骤 1.dfs预处理出LCA需要用到的数组,顺便搞出DFS序 // 经典的 两件套去搞出 LCA void dfs1
阅读全文
摘要:基环树 步骤一(找环) 只要找到环的边 只要找到一个环的两个端点,然后对于两个端点进行分类讨论,也就是把这条链断开再合上的情况:骑士 因为他只要找到一条会把原来的树形结构变成环的边。那么我们用并茶几(O.o)去维护当前两个点的状态,然后如果已经在一个集合里面了,就不加边而是存起来,最后对这两个点分别
阅读全文
摘要:杭电三:树链剖分+线段树 前置知识 DFS序: 在处理一棵树的时候先进行一遍DFS,把树上问题转化为链上问题。 重儿子 树链剖分在简单的DFS序上增加了一个定义:重儿子:一颗子数中size最大的一个分支,称作这个父节点的重儿子,然后在进行DFS序的形成的过程中,优先处理重儿子的那一条链。 // 判断
阅读全文