摘要:
题意:一张 \(n\times m\) 的网格图,行和列的间距为 \(1\)。有 \(n\times m\) 个激光器,每个激光器可以用 \((X_1, X_2, X_3, X_4)\) 表示,其中 \(0\le X_1, X_2, X_3, X_4\le 1\),表示是否向上、向右、向下、向左发射 阅读全文
摘要:
很 OI 的一道题目。 题意:定义两个字符串 \(a_{1\dots k}, b_{1\dots k}\) 同构当且仅当存在一种双射 \(f : \sum \to \sum\) 使得 \(\forall i, f(a_i) = b_i\)。给定字符串 \(s_{1\dots n}\),求 \(s\) 阅读全文
摘要:
原题 非常巧妙。 对于一个序列的判定,从后往前贪心,维护 \(b_{1\dots n}\),表示第 \(i\) 个子序列还有多少个空位。每次对于当前 \(a_i\),找到最小的 \(b_j\) 满足 \(b_j \ge a_i\),然后令 \(b_j \gets b_j - 1\),如果某次找不到则 阅读全文
摘要:
加深了一点点对同余最短路的理解。 link 考虑若对所有数 \(+1\),那么 \(f'_{1\dots n}\) 都会 \(+(n - 1)\),这启示我们可以根据最小值划分进行区间 dp。 设 \(dp_{l, r, V}\) 表示考虑数字 \(f_{l\dots r}\),区间 \(f'_{l 阅读全文
摘要:
Top Cluster 系列: Top Cluster 树分块入门学习笔记 树分块 静态 Top Tree 小记 定义 簇(Cluster):一个连通边集,每个簇有两个界点。 界点、内点:两个簇只会在界点处有交,除了界点外其他点为内点。 这两个定义也在 Top Cluster 树分块 解释过,下面用 阅读全文
摘要:
link 考虑对于每个连通块,我们寻找一个代表元计数。 可以设定为深度最小的点,若深度同样小,则选定编号更小的。我们对于每个点 \(u\) 求出 \(l_u, r_u\) 表示根据上述比较规则下比 \(u\) 小,且距离不超过 \(C\),最接近 \(u\) 的一左一右两个点。如果 \(l_u, r 阅读全文
摘要:
Educational。link 连通块问题不强于路径统计问题,考虑点分治,对于每个分治点统计所有包含该点的连通块。 判断一个连通块是否包含一个分治点是容易的,DFS 一遍判断路径上最大最小值是否超出限制。 DFS 可以求出所有点到分治点的路径上的最大最小值,视作一个区间 \([mn_i, mx_i 阅读全文
摘要:
link 很厉害的题目。 先弱化题目,考虑 \(l = 1, r = n\) 怎么做。 设 \(f(x, y)\) 表示只保留值域在 \([a_x, a_y]\) 的数的最大子段和,有用状态数为 \(\mathcal O(n^2)\)。 我们发现这玩意其实是可以分治的:将原序列分成两半,求出左半部分 阅读全文
摘要:
link 加深了对分块算法的理解。 题目相当于求解一个区间内每种颜色出现次数平方和,这种题显然无法 polylog。 先尝试分块,将贡献拆成 散块 - 散块;散块 - 整块;整块 - 整块 三种。 散块 - 散块 是容易的,直接用桶计数就好。 整块 - 整块:设 \(d_{c, i}\) 表示颜色 阅读全文
摘要:
link 先离线扫描线,相当于在 \(l\) 这个时刻加入一个点,然后每次令所有点向某个点的方向移动一步,在 \(r\) 时刻查询某个点的位置。 以 \(1\) 为根,对于 \(a_i\) 相当于令 \(1\to a_i\) 这条链上所有点向下移动一步,其他点向上移动一步。 我们需要同时支持这两种操 阅读全文