给定 (n) 个点和一个常数 (D) ,第 (i) 个点权值为 (a_i) ,点 (i, j) 之间有一条边权为 (|i-j| imes D+a_i+a_j) 的边,求这张完全图的 MST 权值
- (nleq2 imes10^5)
- (D, a_iin[1, 10^9])
我会 Boruvka 直接莽, (O(nlog^2n))
考虑分治,假设当前处理到了区间 ([l, r]) ,可以发现 ([l, mid]) 与 ([mid+1, r]) 之间的某些边是不会被用到的,只用建出 区间 ([l, mid]) 内 (A_{pos}-pos imes D) 最小的 (pos) 到 ([mid+1, r]) 中每一个点的边;区间 ([mid+1, r]) 内 (A_{pos}+pos imes D) 最小的 (pos) 到 ([l, mid]) 中每一个点的边
一共会建出 (O(nlog n)) 条边,暴力求最小生成树,时间复杂度 (O(nlog ^2n))
还有一种线性的神仙做法,鸽了
GCJ 2018 Round 1B Task2 Mysterious Road Signs
给定三个长为 (n) 的序列 (A, B, D) ,其中 (D) 单调递增
定义一段区间 ([l, r]) 合法,当且仅当 (exist (M, N), forall lleq ileq r, D_i+A_i=M) 或 (D_i-B_i=N) 成立
求出合法区间的最长长度,与最长的合法区间个数
- (nleq10^5)
- (A_i, B_i, D_iin[1, 10^6])
做法一:
分治,对于区间 ([l, r]) ,求出 (mid, mid+1) 对应的 (M, N) ,往左 / 往右找到第一个不满足 (M) / (N) 限制的位置,讨论四种情况即可, (O(nlog n))
做法二:
记 (f(i, j, k)) 为 以 (i) 结尾,限制条件中的 (M=j, N=k) 时,最长的合法区间长度
有用的状态数显然是线性的
转移可以考虑记一个 (g1(i, j)) 表示限制条件中的 (M=j, N=-1) 时,最长的合法区间长度; (g2(i, k)) 表示限制条件中的 (M=-1, N=k) 时,最长的合法区间长度
现在 (f(i, j, k)) 就可以从 (f(g1(i, j)-1), f(g2(i, k)-1)) 转移,时空复杂度 (O(n))
CF444C DZY Loves Colors
给定一个序列,初始 (a_i=i) ,每个位置的权值为 (0) ,有 (q) 次操作:
- 将区间 ([l, r]) 赋值为 (x) ,如果第 (i) 个位置被赋值为 (x) ,第 (i) 个位置的权值会增加 (|a_i-x|)
- 询问区间 ([l, r]) 的权值和
(n, qleq10^5)
结论:序列的颜色段数量在 (q) 次操作中总共只会有 (O(n+2q)) 种
因此在线段树上,对于区间颜色相同的点直接打 tag,否则暴力递归
CF808G Anthem of Berland
给定两个串 (s, t) ,(s) 包含小写字母和问号, (t) 仅包含小写字母
将 (s) 中的每个问号变成一个小写字母(共 (26^{cnt}) 种方案),求出所有方案中, (t) 匹配 (s) 子串的次数的最大值
(|s|, |t|leq10^5; |s|cdot|t|leq10^7)
做法一:
记 (f_{i, j}) 为走到 (s) 的第 (i) 位,匹配了 (t) 的前 (j) 个字符,当前答案的最大值
对于 (s_i= ?) ,暴力枚举 (26) 种字符,使用 kmp 转移
做法二:
记 (f_i) 为走到 (s) 的第 (i) 位,当前答案的最大值
可以枚举是否在 (i) 处匹配一个 (t) 转移,由于最优解 (t) 的所有匹配位置可能有交,因此要枚举 (t) 的所有 next,但是这并不能保证 (s) 对应位置等于 (t) 的某一个前缀,因此需要保证在上一段 (s) 的末尾放了一个 (t)
因此记 (g_i) 为强制在 (s) 的第 (i) 位匹配一个 (t) ,当前答案的最大值,即可转移
CF1327D Infinite Path
给定一个长为 (n) 的排列 (p) ,和一个颜色序列 (c_i)
定义两个排列 (p, q) 的乘积为 ({p_{q_i}})
找到最小的正整数 (k) ,令 (q=p^k) ,存在 (i) 满足 (c_i=c_{q_i}=c_{q_{q_i}}=cdots)
(displaystylesum nleq2 imes10^5)
结论1:将 ((i, p_i)) 连边,对于 (p) 中的所有环,在新图内从这个环的第 (i) 个点向第 (i+k) 个点连边,构成了 (p^k) 的图
结论2:令 (p) 中的某一个环环长为 (sz) ,则这个环在 (p^k) 中构成的环与 (p^{gcd(k, sz)}) 中构成的环元素相同
题目即为找一个 (k) 使得 (p^k) 存在一个颜色相同的环,由于结论2,对于 (p) 中的一个环,枚举 (sz) 的所有因数 (k) ,考虑这个环在 (p^k) 中的构成,判断是否满足条件,时间复杂度 (O(nsqrt n))