09 2021 档案
摘要:圆方树 图的路径信息是很难处理的,因为有环. 如果我们需要处理的路径信息有特殊性质,可以考虑使用圆方树. 在圆方树中,定义方点和圆点. 其中,圆点就是原图中存在的点,编号为 ~ . 方点是我们加进去的,且一个点双联通分量对应一个方点. 这里给出具体建立圆点方点的代码:
阅读全文
摘要:根号数据结构 在以前,我十分讨厌带根号的数据结构,认为不够优雅. 但是在很多时候,带 数据结构的作用比较局限,且复杂. 这个时候,根号数据结构的作用是十分巨大的. 根号数据结构主要依赖于复杂度的分析,即将看似暴力的做法捏合在一起. 普通莫队 最简单的莫队. 可以处理只有
阅读全文
摘要:数位DP 与数位有关的 DP. 一般来说,无脑记忆化搜索就完事了. 直接递推不仅细节繁琐,而且还不好想. 记忆化搜索的时候要记录:1. 当前数位. 2. 是否顶着上界. 3. 是否有前导零. 4. 计数器(为了满足题目中的条件) luoguP4317 花神的数论题 非常经典的数位 DP. 注意如果想
阅读全文
摘要:看上去是一个需要支持换根的数据结构. 用 来做肯定是可以的. 但是需要对每一个点的虚儿子们开一个 , 然后维护子树信息,相对麻烦. 不妨用树链剖分来做: 假设当前根为 , 要查询的点为 .
阅读全文
摘要:把原始的图进行缩点, 形成边双树,然后把询问和加边的关键点加入,建成虚树. 在虚树上连新加入的边,再跑一遍边双算法. 最后只需查询任意两点是否都在一个联通分量里就行. 细节比较繁琐,然后虚树和点双都要注意对变量的清空. 更简单的做法是用 来做. 具体做法就是先将初始图的
阅读全文
摘要:Codeforces Round #720 (Div. 2) 来源:https://codeforces.com/contest/1521 A.Nastia and Nearly Good Numbers 若 , 则不合法. 否则直接构建 $\mathrm{A, A \t
阅读全文
摘要:Codeforces Round #721 (Div. 2) 来源:https://codeforces.com/contest/1527 A. And Then There Were K 不妨打一个表看看有没有什么规律. 发现每个数字 的答案是
阅读全文
摘要:虚树 在处理一些树上的询问时,总询问点数为 , 但询问次数可能很多, 这时就需要虚树. 虚树的思想是尽可能用少的节点将询问点数串联起来. 对于询问点,虚树建立后只包含询问点之间的 以及询问点本身. 虚树的构建 先对所有询问点按照
阅读全文
摘要:segment tree beats 1.线段树维护历史最值 例题:洛谷P4314 CPU监控 令 标记表示将线段树当前区间所有数字变成 通过 标记可以实现区间赋值,区间加法,以及 $\mathrm{max(a[i]
阅读全文
摘要:dsu on tree 在处理子树询问时,子树与子树之间总是相互干扰. 常用的处理手法有线段树合并,dfs 序等来规避子树之间的干扰. dsu on tree 则是利用的树链剖分轻重链的思想在多一个 的复杂度下避开子树之间干扰 算法模板: void dfs2(int x, i
阅读全文
摘要:Educational Codeforces Round 82 (Rated for Div. 2) 来源:https://codeforces.com/contest/1303 A.Erasing Zeroes 找左右两端的 1,然后统计中间 0 的个数即可. #include <cstdio>
阅读全文