09 2021 档案

摘要:并不知道算不算动态DP. 对树进行树链剖分. 令 $\mathrm{f[x]}$ 表示 $\mathrm{x}$ 子树的答案. 令 $\mathrm{g[x]}$ 表示虚儿子答案之和. 然后有 $\mathrm{f[x]=min(v[x], g[x]+f[k])}$, 其中 $\mathrm{k}$ 阅读全文
posted @ 2021-09-30 21:08 guangheli 阅读(18) 评论(0) 推荐(0)
摘要:圆方树 图的路径信息是很难处理的,因为有环. 如果我们需要处理的路径信息有特殊性质,可以考虑使用圆方树. 在圆方树中,定义方点和圆点. 其中,圆点就是原图中存在的点,编号为 $1$ ~ $\mathrm{n}$. 方点是我们加进去的,且一个点双联通分量对应一个方点. 这里给出具体建立圆点方点的代码: 阅读全文
posted @ 2021-09-27 10:35 guangheli 阅读(73) 评论(0) 推荐(0)
摘要:根号数据结构 在以前,我十分讨厌带根号的数据结构,认为不够优雅. 但是在很多时候,带 $\mathrm{log}$ 数据结构的作用比较局限,且复杂. 这个时候,根号数据结构的作用是十分巨大的. 根号数据结构主要依赖于复杂度的分析,即将看似暴力的做法捏合在一起. 普通莫队 最简单的莫队. 可以处理只有 阅读全文
posted @ 2021-09-23 22:22 guangheli 阅读(217) 评论(0) 推荐(0)
摘要:数位DP 与数位有关的 DP. 一般来说,无脑记忆化搜索就完事了. 直接递推不仅细节繁琐,而且还不好想. 记忆化搜索的时候要记录:1. 当前数位. 2. 是否顶着上界. 3. 是否有前导零. 4. 计数器(为了满足题目中的条件) luoguP4317 花神的数论题 非常经典的数位 DP. 注意如果想 阅读全文
posted @ 2021-09-23 14:14 guangheli 阅读(63) 评论(0) 推荐(0)
摘要:看上去是一个需要支持换根的数据结构. 用 $\mathrm{LCT}$ 来做肯定是可以的. 但是需要对每一个点的虚儿子们开一个 $\mathrm{set}$, 然后维护子树信息,相对麻烦. 不妨用树链剖分来做: 假设当前根为 $\mathrm{root}$, 要查询的点为 $\mathrm{x}$. 阅读全文
posted @ 2021-09-23 13:52 guangheli 阅读(40) 评论(0) 推荐(0)
摘要:把原始的图进行缩点, 形成边双树,然后把询问和加边的关键点加入,建成虚树. 在虚树上连新加入的边,再跑一遍边双算法. 最后只需查询任意两点是否都在一个联通分量里就行. 细节比较繁琐,然后虚树和点双都要注意对变量的清空. 更简单的做法是用 $\mathrm{LCT}$ 来做. 具体做法就是先将初始图的 阅读全文
posted @ 2021-09-21 19:57 guangheli 阅读(39) 评论(0) 推荐(0)
摘要:直接做没什么思路,那就考虑根号算法 令 $\mathrm{s[k]}$ 的长度为 $\mathrm{len}$. 如果 $\mathrm{len}$ 的长度大于根号 $\mathrm{n}$, 则这样的 $\mathrm{s[k]}$ 很少. 可以直接枚举长度大于根号的串,然后和其他所有串去匹配. 阅读全文
posted @ 2021-09-20 06:56 guangheli 阅读(46) 评论(0) 推荐(0)
摘要:Codeforces Round #720 (Div. 2) 来源:https://codeforces.com/contest/1521 A.Nastia and Nearly Good Numbers 若 $\mathrm{B=1}$, 则不合法. 否则直接构建 $\mathrm{A, A \t 阅读全文
posted @ 2021-09-17 17:34 guangheli 阅读(59) 评论(0) 推荐(0)
摘要:Codeforces Round #721 (Div. 2) 来源:https://codeforces.com/contest/1527 A. And Then There Were K 不妨打一个表看看有没有什么规律. 发现每个数字 $\mathrm{x}$ 的答案是 $\mathrm{x}$ 阅读全文
posted @ 2021-09-17 02:16 guangheli 阅读(54) 评论(0) 推荐(0)
摘要:强连通分量 在无向图中取一个 DFS 树, 若出现返祖边,则出现了 "环",环中的点可互达. $\mathrm{tarjan}$ 算法中的 $\mathrm{low[x]}$ 就是环上深度最浅的点. $\mathrm{low[x]}$ 有两种求法: 1. 子孙的 $\mathrm{x}$ 可以更新 阅读全文
posted @ 2021-09-15 09:19 guangheli 阅读(102) 评论(0) 推荐(0)
摘要:同余最短路 一堆点凑成了 $\mathrm{sum}$, 则 $\mathrm{sum}$ 可以表示成 $\mathrm{k \times a[1] + i}$ 的形式. 即 $\mathrm{k}$ 为商,后面的 $\mathrm{i}$ 为 $\mathrm{mod}$ $\mathrm{a[1 阅读全文
posted @ 2021-09-15 07:54 guangheli 阅读(62) 评论(0) 推荐(0)
摘要:方法一: $\mathrm{f[x]}$ 表示所有物品凑成体积为 $\mathrm{x}$ 的方案数. $\mathrm{g[x][j]}$ 表示不用 $\mathrm{x}$ 物品组成体积为 $\mathrm{j}$ 的方案数. 然后 $\mathrm{g}$ 数组可以用 $\mathrm{f,g 阅读全文
posted @ 2021-09-15 06:01 guangheli 阅读(28) 评论(0) 推荐(0)
摘要:前置知识:洛谷P4198 楼房重建 在本题中,需统计 $\mathrm{s[i]}>\max_{j=1}^{i-1}s[j]$ 的 $\mathrm{i}$ 的个数. 1.$\mathrm{mx[i]}$ 为区间最大值 2.$\mathrm{cnt[i]}$ 为在考虑区间 $[\mathrm{l}, 阅读全文
posted @ 2021-09-14 08:59 guangheli 阅读(41) 评论(0) 推荐(0)
摘要:做法一: 线段树合并. 令 $\mathrm{dp[x][i]}$ 表示以 $\mathrm{x}$ 节点为根的子树全部被覆盖且延伸到了深度为 $\mathrm{i}$ 的祖先. 考虑 $\mathrm{x},\mathrm{y}$ 两个子树如何合并: 有 $\mathrm{dp'[x][i]=dp 阅读全文
posted @ 2021-09-14 08:01 guangheli 阅读(64) 评论(0) 推荐(0)
摘要:KMP 给定串 $\mathrm{s}$ 与 $\mathrm{t}$,求 $\mathrm{t}$ 在 $\mathrm{s}$ 中所有出现位置. 这个问题显然可以用 $\mathrm{SAM}/\mathrm{AC}$ 自动机处理,但 $\mathrm{KMP}$ 的处理更简单一些. 定义串 $ 阅读全文
posted @ 2021-09-13 09:43 guangheli 阅读(49) 评论(0) 推荐(0)
摘要:虚树 在处理一些树上的询问时,总询问点数为 $O(n)$, 但询问次数可能很多, 这时就需要虚树. 虚树的思想是尽可能用少的节点将询问点数串联起来. 对于询问点,虚树建立后只包含询问点之间的 $\mathrm{lca}$ 以及询问点本身. 虚树的构建 先对所有询问点按照 $\mathrm{dfs}$ 阅读全文
posted @ 2021-09-11 09:01 guangheli 阅读(92) 评论(0) 推荐(0)
摘要:segment tree beats 1.线段树维护历史最值 例题:洛谷P4314 CPU监控 令 $(x,y)$ 标记表示将线段树当前区间所有数字变成 $\mathrm{max(a[i]+x, y)}$ 通过 $(x,y)$ 标记可以实现区间赋值,区间加法,以及 $\mathrm{max(a[i] 阅读全文
posted @ 2021-09-09 01:59 guangheli 阅读(141) 评论(0) 推荐(0)
摘要:dsu on tree 在处理子树询问时,子树与子树之间总是相互干扰. 常用的处理手法有线段树合并,dfs 序等来规避子树之间的干扰. dsu on tree 则是利用的树链剖分轻重链的思想在多一个 $O(\log n)$ 的复杂度下避开子树之间干扰 算法模板: void dfs2(int x, i 阅读全文
posted @ 2021-09-07 19:07 guangheli 阅读(107) 评论(0) 推荐(1)
摘要:Educational Codeforces Round 82 (Rated for Div. 2) 来源:https://codeforces.com/contest/1303 A.Erasing Zeroes 找左右两端的 1,然后统计中间 0 的个数即可. #include <cstdio> 阅读全文
posted @ 2021-09-07 17:42 guangheli 阅读(45) 评论(0) 推荐(0)
摘要:李超线段树 用途:给定 $\mathrm{n}$ 个 $\mathrm{y}=\mathrm{kx}+\mathrm{b}$ 形式的线段,问 $\mathrm{x}=\mathrm{x[0]}$ 与哪条线段交点的纵坐标值最大. 对于李超树的每一个区间,维护这条区间的 “优势线段”,即区间 $\mat 阅读全文
posted @ 2021-09-06 17:06 guangheli 阅读(108) 评论(0) 推荐(0)