随笔分类 - 算法:数据结构 > 线段树相关
摘要:链接 A B C D E F G H I J K L \(\color{green}{\texttt{+}}\) \(\color{red}{\texttt{+}}\) \(\color{green}{\texttt{+}}\) \(\color{red}{\texttt{+}}\) \(\colo
阅读全文
摘要:链接 题目大意 给定一颗树,需要给每条边赋边权0/1,并且对于给定的 \(k\) 条链,保证链两端为祖先-儿子关系,要求每条链上至少有一个1。求方案数。 题解 考虑dp,用 \(f_{i,j}\) 表示下端点在 \(i\) 的子树中且未包含1的所有链里上端点最深为 \(j\)。即除此之外子树中的部分
阅读全文
摘要:点分树是基于点分治的支持修改操作的算法,所以也叫动态点分治。 具体来说,我们发现对于某些树上的题目,点与点之间的距离十分重要,点与点之间的关系反而不那么重要。比如查询距离 \(u\leq k\) 的点。 由于点分治是一种离线做法,而很多毒瘤出题人往往会加上修改/强制在线,这时候就用到点分树了。 考虑
阅读全文
摘要:链接 首先,假如不考虑时间复杂度,直接高精度边权+最短路显然是对的,但是这样会达到 \(O(m\log n\times x)\) 的时间复杂度。 考虑如何优化 \(O(x)\) 的查询时间。题目中特别说明了一条边的边权一定是 \(2^x\) 。而我们需要的操作是将某一位 \(+1\) 并进位,同时查
阅读全文