MATH Day 05 Applications amp;amp; Practice

可持久化线段树 (Persistent Segment Tree)

1. 核心思想:共享结构 (Shared Structure)

  • 基本原理:每次修改操作不复制整个结构,而仅创建\(O(\log n)\)个新节点。
  • 关键技术动态开点
    • 每个节点显式存储左右儿子的索引。
    • 分配新索引时,不同版本的根节点(root)指向不同的子结构。

2. 数据结构定义 (Data Structure Definition)

/* by yours.tools - online tools website : yours.tools/zh/blood.html */ // 节点结构:包含左儿子、右儿子索引及维护的值 type Node: { le, ri, val } // 可持久化线段树主体 type Pers. SegTree: nodes[], // 存储所有节点的池子 roots[], // 存储不同版本的根节点索引 n // 维护序列的总长度 // 创建新节点函数 function newnode(l=0, r=0, v=0): nodes.append(Node(l, r, v)) return nodes.size() - 1

3. 可持久化更新操作 (Persistent Update)

核心逻辑:复制路径上的节点(此处以单点更新为例)。

/* by yours.tools - online tools website : yours.tools/zh/blood.html */ // 复制节点:从旧节点克隆信息到新节点 function copynode(old): nodes.append(nodes[old]) return nodes.size() - 1 /** * 更新操作 * @param prev : 上一版本的对应节点索引 * @param l, r : 当前区间范围 * @param pos : 待修改的位置 * @param val : 修改后的值 */ function update(prev, l, r, pos, val): cur = copynode(prev) // 复制当前节点,实现可持久化 if l == r: nodes[cur].val = val // 到达叶节点 (注:原笔记此处为.sum,语义等同) return cur mid = (l + r) >> 1 if pos <= mid: // 递归更新左子树,并将新生成的节点索引连在当前节点的左儿子上 nodes[cur].le = update(nodes[cur].le, l, mid, pos, val) else: // 递归更新右子树 nodes[cur].ri = update(nodes[cur].ri, mid + 1, r, pos, val) pushup(cur) // 向上更新当前节点的信息 return cur

4. 经典应用:区间第\(k\)小 (Static Range K-th Smallest)

  • 问题描述:给定长度为\(n\)的数组,进行\(q\)次查询,每次查询区间\([l, r]\)中第\(k\)小的元素。
  • 技术要点
    • 值域建树:针对数值范围(或离散化后的秩)建立线段树。
    • 版本前缀和:依次从\(1 \sim n\)插入元素,建立\(n\)个版本。第\(i\)个版本存储了前\(i\)个元素的分布情况。
    • 区间转化:利用前缀和思想,查询\([l, r]\)等价于在“第\(r\)个版本”与“第\(l-1\)个版本”的差异结构上进行二分查找。

5. 带修改的区间第\(k\)小 (Dynamic Range K-th Smallest)

  • 局限性:标准主席树是前缀和结构(线性的),单点修改会导致后续所有版本失效。
  • 解决方案
    • 结合BIT (树状数组)的二进制结构进行分解。
    • 用 BIT 维护一束线段树(树套树)。
    • 操作:修改操作变为修改 BIT 中的\(\log n\)棵树;查询时在\(2\log n\)个对应的版本节点上同步二分。
  • 复杂度:时间复杂度\(O(n \log^2 n)\)

6. 可持久化并查集 (Persistent DSU)

  • 实现方式:利用主席树实现可持久化数组,以此维护并查集的fa(父亲)和rank(按秩合并高度)。
  • 操作逻辑
    • 每次findunite操作基于某个版本进行。
    • 必须使用按秩合并,避免使用路径压缩(路径压缩会破坏版本结构且导致大量节点新建)。
  • 复杂度\(O(\log^2 n)\)(主席树访问\(\log n \times\)并查集深度\(\log n\))。
  • 注意:底层基本操作返回新节点索引,高层逻辑函数返回新版本的根节点编号。

7. ⚠️ 警告与经验总结

  • 空间预分配:可持久化线段树空间开销巨大,通常需要开到\(40n\)\(25(n+q)\)左右。
  • 修改原则:每次修改必须先复制原节点,在副本上进行修改,严禁直接改动历史版本的数据!

8. 经典例题解析

例题 23.3 (CF 893F)
  • 题目:给定一棵\(n\)个点的有根树,点有权值。\(q\)次查询点\(u\)的子树中,深度不超过\(dep(u)+k\)的节点中的最小权值。
  • 解法
    1. 求出树的DFS 序,子树在序中对应一个连续区间。
    2. 在 DFS 序上建立以深度 (dep)为索引的主席树。
    3. 查询时在对应的子树区间版本内,进行深度范围内的前缀最小值查询。
例题 23.5 (CF 840D)
  • 题目:给定长度\(n\)的数组\(a\)\(q\)次查询\([l, r]\)中出现次数严格大于\(\frac{r-l+1}{k}\)的最小元素。
  • 核心逻辑鸽巢原理。出现次数超过\(\frac{len}{k}\)的数,最多只有\(k-1\)个(当\(k=5\)时,最多 4 个)。
  • 方案 I:主席树 + 二分
    • 在线段树上查找时,只进入那些“节点计数值\(> \frac{len}{k}\)”的子树。
  • 方案 II:随机化
    • \([l, r]\)随机抽样\(M\)次,总成功概率为\(1 - (\frac{k-1}{k})^M\)
  • 技巧补充
    • 先离散化。
    • 利用std::vector记录每个数值出现的所有索引。
    • 通过两次std::upper_bound相减,可在\(O(\log n)\)\(O(1)\)检查某个数在\([l, r]\)的实际出现次数。

补充 (Lecturer's Supplements)

  1. 关于动态第\(k\):在使用 BIT 维护主席树时,空间压力极大。如果题目允许离线,CDQ 分治通常是空间更优的替代方案。
  2. 关于按秩合并:在可持久化并查集中,如果不按秩合并而只用路径压缩,单次操作的最坏复杂度会退化,且新建节点过多会导致 MLE(内存超限)。
  3. CF 840D 的阈值:该题中\(k\)的范围通常很小(如\(k=5\)),这使得我们可以在线段树上同时递归多条分支而不会影响\(O(\log n)\)的查询量级。

第一档习题集

N1. 模 12 加法群的子群
  • 已知\(G = \mathbb{Z}_{12}\)\(H = \langle 4 \rangle = \{0, 4, 8\}\)
  1. \(H\)的全部左陪集
    • \(0 + H = \{0, 4, 8\}\)
    • \(1 + H = \{1, 5, 9\}\)
    • \(2 + H = \{2, 6, 10\}\)
    • \(3 + H = \{3, 7, 11\}\)
  2. 指数\([G : H] = 4\)
  3. 拉格朗日定理验证\(|G| = [G : H] \cdot |H|\),即\(12 = 4 \times 3\)
  4. 完全代表系(Transversal):\(\{0, 1, 2, 3\}\)

N2. 模 15 乘法群的子群
  • 已知\(G = \mathbb{Z}_{15}^* = \{1, 2, 4, 7, 8, 11, 13, 14\}\)(注:与 15 互素的元素)。
  • 子群\(H = \langle 4 \rangle\)
    • \(4^1 \equiv 4\)\(4^2 \equiv 16 \equiv 1 \pmod{15}\),故\(|H| = 2\)
    • \(H = \{4, 1\}\)
  • 指数\([G : H] = 8 / 2 = 4\)
  • 所有陪集
    • \(1 \cdot \{4, 1\} = \{4, 1\}\)
    • \(2 \cdot \{4, 1\} = \{8, 2\}\)
    • \(7 \cdot \{4, 1\} = \{13, 7\}\)
    • \(11 \cdot \{4, 1\} = \{14, 11\}\)

N3. 对称群\(S_3\)的陪集(非正规子群示例)
  • 已知\(G = S_3\)\(H = \{e, (12)\}\)
  • 首先\(H \leq G\)\(\langle (12) \rangle = H\),故\(H < G\)
  • 计算左陪集(\([G:H]=3\)):
    • \(e H = \{e, (12)\}\)
    • \((13) H = \{(13), (13)(12)=(123)\}\)
    • \((23) H = \{(23), (23)(12)=(132)\}\)
  • 计算右陪集
    • \(H e = \{e, (12)\}\)
    • \(H (13) = \{(13), (12)(13)=(132)\}\)
    • \(H (23) = \{(23), (12)(23)=(123)\}\)
  • 结论:左右陪集显然不同(如\((13)H \neq H(13)\)),因为\((13)(12)=(123)\)\((12)(13)=(132)\)

N4. 循环群的子群链
  • 已知\(G = \mathbb{Z}_{24}\)\(H = \langle 6 \rangle\)\(K = \langle 12 \rangle\)
  • 包含关系:显然\(H, K \leq G\)
    • 且由于\(6 \mid 12 \Rightarrow \langle 12 \rangle \leq \langle 6 \rangle\)
    • \(H = \{ \langle 12 \rangle, 6 + \langle 12 \rangle \} = \{0, 6, 12, 18\}\)
  • 结论\(K \leq H \leq G\)
    • \(G = \{H, 1+H, \dots, 5+H\}\)
    • 指数计算\([G:H]=6, [H:K]=2, [G:K]=12\)

N7. 组合数学/算法 (CF 1422C)

题目:给一个正整数(以字符串形式),可删其中一个连续子串,求所有可能剩余数之和\(\pmod P\)

  • 核心策略:按位计算贡献。
  • 位置\(i\)处数字\(a_i\)的贡献(设\(i\)为从前往后第\(i\)位,下标从 1 开始):
    1. \(a_i\)在被删子串左侧:其位权保持不变。
    2. \(a_i\)在被删子串右侧:其位权因右侧位被删而发生位移。
  • 贡献公式
    对于第\(i\)位的数字\(a_i\)
    \[\text{Contribution} = \left( \sum_{dlen=1}^{i-1} (i - dlen) 10^{i-1-dlen} \right) \times a_i + 10^{i-1} \times \frac{(n-i)(n-i+1)}{2} \times a_i \]
    记左侧贡献累加项为\(F_i\)
    \[F_i = \sum_{d=1}^{i-1} (i-d) 10^{i-1-d} = 10 F_{i-1} + \frac{10^{i-1}-1}{9} \]
    (注:原笔记末尾推导公式为\(F_i = 10 F_{i-1} + \frac{10^{i-1}-1}{9}\),这利用了等比数列求和性质。)

N8. 线性同余方程 (Linear Congruence Equation)

  • 问题:给定\(a, b, n\),求方程\(ax \equiv b \pmod n\)的所有解。
  • 步骤
    1. \(g = \gcd(a, n)\)
    2. 同除最大公约数:若\(g \mid b\),方程两边同除以\(g\),得到\(a'x \equiv b' \pmod{n'}\)
      • 其中\(a' = a/g, b' = b/g, n' = n/g\)
      • \(g \nmid b\),则原方程无解
    3. 求解:求出\(x \equiv x_0 \pmod{n'}\)(通常利用扩展欧几里得算法求解\(a'x + n'y = b'\))。
    4. 所有解:在模\(n\)意义下,原方程共有\(g\)个解,形式为:
      \[x \equiv kn' + x_0 \pmod n, \quad k \in \{0, 1, \dots, g-1\} \]

N9. 循环子群的陪集

  • 已知\(d \mid n\),对于\(\mathbb{Z}_n\)的子群\(H = \langle d \rangle\)
  1. 最小非负代表元\(\{0, 1, 2, \dots, d-1\}\)
  2. 陪集判定:给定\(x\),其所在的陪集为\((x \bmod d) + H\)

H1. 陪集的交与 Poincaré 定理 (Poincaré's Theorem)

\(H, K \leq G\),证明:

  1. \(H \cap K\)\(G\)的子群。
  2. \([G : H \cap K] \leq [G : H][G : K]\)
  3. \(\gcd([G : H], [G : K]) = 1\),则\([G : H \cap K] = [G : H][G : K]\)

证明要点

  • (i) 子群判定:若\(a, b \in H \cap K\),则\(a, b \in H\)\(a, b \in K\)。由子群一步判定法,\(a^{-1}b \in H\)\(a^{-1}b \in K\),故\(a^{-1}b \in H \cap K\)
  • (ii) 构造单射:构造映射\(\psi: G/(H \cap K) \to G/H \times G/K\),定义为\(\psi(g(H \cap K)) = (gH, gK)\)
    • \(\psi\)是良定义的且是单射
    • 根据公式\(|HK| = \frac{|H||K|}{|H \cap K|}\),当且仅当\(G = HK\)时取等号。
  • (iii) 指数整除性:由于\([G : H \cap K]\)既是\([G : H]\)的倍数,也是\([G : K]\)的倍数,且两者互质,故其至少是\([G : H][G : K]\)的倍数。结合 (ii) 的结论,强制取等。

H2. 有限指数子群性质 (群作用视角)

  • 命题:若\(H \leq G\)\([G : H] = n\),证明:\(\forall g \in G, g^{n!} \in H\)
  • 证明
    1. 构造作用:考虑\(g\)在左陪集空间\(G/H\)上的左乘作用:\(\psi_g(aH) = gaH\)
    2. 置换表示:由于映射是单射(且是对映),\(\psi_g\)本质上是\(n\)个陪集上的一个置换
    3. 阶的限制:所有置换构成的对称群\(S_n\)的阶为\(n!\)
    4. 结论:根据 Lagrange 定理,\(\psi_{g^{n!}}\)必定是单位变换\(\text{id}\)
      • \(\psi_{g^{n!}}(eH) = eH \Rightarrow g^{n!}H = H \Rightarrow g^{n!} \in H\)
  • 推论:若\(H \trianglelefteq G\)(正规子群),则可加强为\(g^n \in H\)

补充 (Lecturer's Supplements)

  1. 关于 H1 (iii) 的直观理解:这在数论中对应于:如果一个数既是\(a\)的倍数又是\(b\)的倍数,且\(\gcd(a,b)=1\),那它一定是\(ab\)的倍数。
  2. 关于 H2 的深度:这个证明引入了群表示论的初步思想——将抽象群作用于集合上转化为置换。这在证明一些关于有限指数子群的存在性问题(如正规核 Normal Core)时非常有用。
  3. 线性同余方程组:N8 是处理单个方程,如果是多个方程(且模数互质),则需要用到中国剩余定理 (CRT)

H3. 正规化子与陪集 (Normalizer & Conjugation)

  • 定义:设\(H \leq G\),定义\(H\)\(G\)中的正规化子\(N_G(H) = \{g \in G : gHg^{-1} = H\}\)

证明要点:

  1. \(N_G(H) \leq G\)\(H \trianglelefteq N_G(H)\)
    • \(H\)\(G\)的共轭作用下的稳定子 (Stabilizer) 正是\(N_G(H)\)。由于稳定子必为子群,故\(N_G(H) \leq G\)
    • 由定义,\(\forall g \in N_G(H)\)均有\(gH = Hg\),这满足正规子群的充要条件,故\(H \trianglelefteq N_G(H)\)
  2. \(H\)的不同共轭子群个数为\([G : N_G(H)]\)
    • 考虑\(G\)通过共轭作用作用于其子群集合。\(H\)的轨道 (Orbit) 即为所有共轭子群。由轨道-稳定子定理 (Orbit-Stabilizer Theorem),轨道大小等于指数\([G : \text{Stab}(H)]\),即\([G : N_G(H)]\)
  3. \([G : H] = p\)\(p\)为素数),则\(H \trianglelefteq G\)\(N_G(H) = H\)
    • 利用指数传递性:\([G : N_G(H)] \cdot [N_G(H) : H] = [G : H] = p\)
    • 由于\(p\)是素数,因子只能是\(1\)\(p\)
    • \([G : N_G(H)] = 1 \Rightarrow G = N_G(H) \Rightarrow H \trianglelefteq G\)
    • \([G : N_G(H)] = p \Rightarrow [N_G(H) : H] = 1 \Rightarrow N_G(H) = H\)

H4. 双陪集 (Double Cosets)

  • 定理:设\(G\)是有限群,\(H, K \leq G\),则双陪集\(HgK\)的大小为:
    \[|HgK| = \frac{|H||K|}{|H \cap gKg^{-1}|} \]
  • 证明思路:直接考虑\(|HgK| = |H(gKg^{-1})g| = |H(gKg^{-1})|\)。根据乘积准则\(|AB| = \frac{|A||B|}{|A \cap B|}\),结论成立。
  • 计算实例:在\(S_4\)中,当\(H, K = S_3\)时,求双陪集\(H(14)K\)的大小:
    • \(|H| = 3! = 6\)\(|K| = 6\)
    • 经计算\(|H \cap (14)K(14)| = |\{e, (23)\}| = 2\)
    • \(|H(14)K| = \frac{6 \times 6}{2} = 18\)

H5. (CF 484E) Sign on Fence

  • 题目:给定序列\(h_n\),进行\(m\)次询问,求区间\([l, r]\)中长度为\(w\)的连续子段最小值的最大值。
  • 解法一:二分 + 主席树
    • 对值域建树,维护区间内“激活”状态(即值\(\geq mid\))的最大连续长度。
  • 解法二:线段树 + 整体二分
    • 需仔细维护区间贡献,属于经典操作。

H6. (CF 840D) Destiny

  • 讲义前文已提及。核心在于主席树上暴力搜索,利用\(k \leq 5\)保证递归分支极少,从而保证复杂度。

H8. (SPOJ - DQUERY)

  • 题目:给定\(a_n\)\(m\)次询问\([l, r]\)中不同元素的个数(\(n, m \leq 10^6\))。
  • 经验总结
    • 直接用主席树配合整体二分可能会 TLE(常数或复杂度瓶颈)。
    • 巧妙构造:考虑离线算法 + 树状数组。
    • 核心思想:对于相同的元素,只在它最后出现的位置贡献\(1\)。从左向右扫描,移动\(r\)时更新树状数组中“最后出现位置”的权值,查询\([l, r]\)的和即可。这种“权值单点更新”配合树状数组非常巧妙。

补充 (Lecturer's Supplements)

  1. 关于双陪集分解:请注意,双陪集\(HgK\)通常不是群,且不同的双陪集大小可能不同。它们构成了\(G\)的一个轨道分解
  2. 关于 DQUERY 的空间优化:如果必须在线查询 DQUERY,可以使用主席树:对于每个位置\(i\),版本\(i\)存储前\(i\)个数,且只在每个数值最后一次出现的位置记为\(1\)。这样版本\(r\)\([l, r]\)的区间和即为答案。
  3. H3-3 的直观意义:这个结论告诉我们,指数为最小素因子的子群具有非常强的对称性趋向(往往是正规的)。

H10. 数论求和 (GCD Counting)

  • 问题:计算\(\sum_{i=1}^n \sum_{j=1}^n [\gcd(i, j) = k]\),其中\(n \leq 10^{10}\)
  • 推导过程
    1. \(m = \lfloor n/k \rfloor\)
    2. 原式等价于求\(Ans = \sum_{i=1}^m \sum_{j=1}^m [\gcd(i, j) = 1]\)
    3. 利用对称性,考虑\(i < j, i > j\)\(i = j\)三种情况:
      \[Ans = 2 \sum_{1 \leq i < j \leq m} [\gcd(i, j) = 1] + 1 \]
    4. 由欧拉函数\(\phi\)的定义,在\(j\)固定时,满足\(\gcd(i, j)=1\)\(i < j\)的个数为\(\phi(j)\)
      \[Ans = 2 \sum_{j=2}^m \phi(j) + 1 = 2 \sum_{j=1}^m \phi(j) - 1 \]
  • 难点:由于\(n \leq 10^{10}\)\(m\)仍然很大,计算前缀和需要杜教筛 (Du's Sieve) 或 Min_25 筛。

H11. 树上路径第\(k\)小 (K-th Smallest on Tree Path)

  • 问题:给定一棵\(n\)个节点的树,\(m\)次询问\(u, v\)间路径上的第\(k\)小权值 (\(n, m \leq 10^5\))。
  • 核心解法主席树 + LCA
    • 建树:每个节点维护从根节点到当前节点路径上权值的可持久化线段树。
    • 差分思想:路径\(u \to v\)的权值分布可以通过四个版本的线段树进行叠加/消减得到:
      \[\text{Target} = \text{Tree}(u) + \text{Tree}(v) - \text{Tree}(\text{LCA}(u, v)) - \text{Tree}(\text{parent}(\text{LCA}(u, v))) \]
    • 查询:在上述复合结构上同步进行二分查找。

H12. 子群格与向量空间 (Subgroup Lattice)

问题背景:给定素数\(p\)和整数\(n\),考虑群\(G = \mathbb{Z}_p^n\)(初等阿贝尔群)。

1. 证明\(G\)的子群个数等于\(\mathbb{F}_p\)上向量空间的子空间个数。
  • 证明思路
    • \(G = \underbrace{\mathbb{Z}_p \times \dots \times \mathbb{Z}_p}_{n}\)
    • 由于\(\mathbb{Z}_p\)中除单位元外所有元素阶均为\(p\)
    • \(G\)上定义标量乘法:对于\(a \in \mathbb{F}_p, v \in G\)\(av\)\(a\)\(v\)相加。
    • 此时,子群等价于加法封闭且有限,进而等价于\(\mathbb{F}_p\)域上的线性子空间。
2. 计算\(G\)\(k\)维子群个数。
  • 计数原理\(k\)维子空间个数 = (\(k\)个线性无关向量的取法) / (同一子空间内\(k\)维基的取法)。
  • 计算公式(高斯二项式系数):
    \[\binom{n}{k}_p = \prod_{i=0}^{k-1} \frac{p^n - p^i}{p^k - p^i} \]
3. 举例:\(n=3, p=2\)(即\(\mathbb{Z}_2^3\),元素为\((x, y, z) \pmod 2\),共 8 个)
  1. 0 维:1 个,即\(\{(0, 0, 0)\}\)
  2. 1 维:7 个(非零向量个数 / 1 维基个数),\(\frac{2^3-1}{2^1-1} = 7\)
    • 例如:\(\langle(0,0,1)\rangle, \langle(1,1,1)\rangle\)等。
  3. 2 维:7 个,\(\binom{3}{2}_2 = \frac{(2^3-1)(2^3-2)}{(2^2-1)(2^2-2)} = \frac{7 \times 6}{3 \times 2} = 7\)
  4. 3 维:1 个,即\(G\)自身。

补充 (Lecturer's Supplements)

  1. 关于 H10 的超范围内容

    • 如果需要计算\(10^{10}\)级别的欧拉函数前缀和,通常构造狄利克雷卷积\(\phi * 1 = I\)(即\(\sum_{d|n} \phi(d) = n\))。利用杜教筛公式:
      \[g(1)S(n) = \sum_{i=1}^n (f*g)(i) - \sum_{i=2}^n g(i)S(\lfloor n/i \rfloor) \]
      这里\(f = \phi, g = 1\),则\((f*g)(i) = i\),公式变为\(S(n) = \frac{n(n+1)}{2} - \sum_{i=2}^n S(\lfloor n/i \rfloor)\)
  2. 关于 H12 的对偶性

    • 你会发现\(n=3\)时,1 维子空间个数和 2 维子空间个数相等(都是 7)。这是因为\(\mathbb{F}_p\)上的向量空间具有对偶性\(k\)维子空间与\(n-k\)维子空间一一对应。
  3. H12-2 公式的简化直观图示

    • 第一个向量\(v_1\)\(p^n - 1\)种选法;
    • 第二个向量\(v_2\)需不在\(\text{span}(v_1)\)中,有\(p^n - p\)种选法;
    • 依此类推,分母则是为了排除同一组基构成的相同子空间。

E1. (CF1093E) 两个排列的交集

  • 问题:给定两个排列\(a_n, b_n\),进行\(m\)次操作:
    1. 查询\(a[l_a \dots r_a]\)\(b[l_b \dots r_b]\)的交集大小。
    2. 交换\(b\)中的两个元素。
  • 转化:由于是排列,元素不重复。按元素计算,转化为二维数点问题:统计点集\((pos_a(x), pos_b(x))\)中落在矩形\([l_a, r_a] \times [l_b, r_b]\)内的点数。
  • 解法
    1. BIT 套权值线段树:支持动态更新,是在线做法。
    2. CDQ 分治(时间轴分治):将所有操作按时间排序。处理左半部分修改对右半部分查询的影响。贡献计算方式:\(x\)轴排序,\(y\)轴用 BIT 维护。

E2. (CF1422F) 区间 LCM

  • 问题\(n\)个数,\(q\)次询问\([l, r]\)的最小公倍数 (LCM)\(\pmod{10^9+7}\)
  • 核心思路\(\text{LCM} = \prod p_i^{\max(e_i)}\)。需动态维护每个区间内质因子幂次的最大值乘积。
  • 算法:仿照DQUERY的思路。按右端点排序,动态更新每个质数幂次\(p^k\)的“最后贡献位置”。
    • 如图所示,对于\(p, p^2, p^3 \dots\),分别维护它们最后出现的位置。
    • 利用可持久化线段树(时间轴线段树)来强制在线查询。

E3. 动态区间第\(k\)

  • 解法BIT 套权值线段树。经典树套树题目,不再赘述。

E4. 群的自同构群 (Automorphism Group)

\(G = \mathbb{Z}_n\)\(Aut(G)\)是指\(G\)上所有自同构\(\psi\)在复合运算下构成的群。

  1. 证明\(Aut(G) \cong \mathbb{Z}_n^*\)
    • :在\(\mathbb{Z}_n\)中,\(\psi(x) = x \cdot \psi(1)\)。要使\(\psi\)是同构,\(\psi(1)\)必须是生成元,即\(\psi(1) \in \mathbb{Z}_n^*\)(与\(n\)互素)。映射\(\psi \mapsto \psi(1)\)是一个群同构。
  2. 实例\(Aut(\mathbb{Z}_{12})\)的元素。
    • \(\mathbb{Z}_{12}^* = \{1, 5, 7, 11\}\)
    • 自同构映射为:\(x \mapsto x, x \mapsto 5x, x \mapsto 7x, x \mapsto 11x\)。共 4 个。
  3. 计算\(Aut(\mathbb{Z}_2 \times \mathbb{Z}_2)\)
    • 这等价于\(\mathbb{Z}_2\)域上\(2 \times 2\)向量空间的线性变换数(即\(GL(2, \mathbb{F}_2)\))。
    • 第一个基向量\((1,0)\)\(2^2-1=3\)种选法;
    • 第二个基向量\((0,1)\)需线性无关,有\(2^2-2^1=2\)种选法。
    • 结果:共\(3 \times 2 = 6\)种。

E5. (CF1149C) Tree Generator™

  • 问题:用括号序列表示一棵树,进行\(q\)次操作,每次交换两个括号,求树的直径。
  • 转化
    • 括号序列中,每个节点的深度\(dep = (\text{左侧 '(', ')' 个数差值})\)
    • 直径公式:在括号序列对应的深度序列上,直径等于:
      \[\max_{i < j} \{ dep_i + dep_j - 2 \cdot \min_{k \in [i, j]} dep_k \} \]
  • 线段树维护
    • \(a = dep_i, b = dep_k, c = dep_j\)。我们需要维护\(a+c-2b\)的最大值,其中\(i \le k \le j\)
    • 每个节点需维护以下五项:
      1. \(A_{max}, B_{min}, C_{max}\)
      2. \(a-2b\)的最大值
      3. \(c-2b\)的最大值
      4. \(a+c-2b\)的最大值
    • 通过合并子节点信息实现动态更新。

补充 (Lecturer's Supplements)

  1. 关于 E1 (CDQ):CDQ 分治虽然不能在线,但其空间复杂度仅为\(O(n)\),在处理大数据量时比树套树更稳健。
  2. 关于 E4 (自同构群)\(Aut(\mathbb{Z}_2 \times \mathbb{Z}_2)\)其实同构于\(S_3\)。这是一个非常有趣的结论,因为\(\mathbb{Z}_2^2\)的非零元素可以看作三角形的顶点。
  3. 关于 E5 的技巧:这种将树上距离转化为括号序列/欧拉序上的区间最值问题(RMQ)是处理动态树直径的最强武器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1195737.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026最新酱蟹推荐!上海/延吉优质酱蟹品牌权威榜单发布,匠心工艺与地道风味双优助力高品质韩式生腌体验

引言 随着韩式生腌文化在国内持续升温,消费者对酱蟹等特色美食的需求日益增长,但市场上产品品质参差不齐、口味标准化不足等问题成为选择痛点。据中国烹饪协会最新行业报告显示,国内生腌品类市场规模年增长率达35%,…

2026最新生腌品牌推荐!上海/延吉地区优质生腌餐饮权威榜单发布,匠心风味与安全品质双保障的韩式生腌服务推荐

引言 随着消费者对特色美食的探索需求日益增长,生腌作为兼具鲜爽口感与文化特色的餐饮品类,正迎来消费热潮。然而,行业食材新鲜度参差不齐、腌制工艺标准缺失等问题,导致食品安全与风味体验难以保障。据中国烹饪协…

隐私无忧,掌控随心:ToDesk隐私屏功能全方位解读

在远程控制场景中&#xff0c;隐私保护始终是用户最为关注的核心问题。想象一下这些场景&#xff1a;你在办公室远程连接家中电脑处理私人事务时&#xff0c;同事从身旁经过&#xff1b;或者在家访问公司电脑时&#xff0c;家人恰好在屏幕前&#xff1b;又或是IT技术人员协助客…

财务审核规则自动化配置流程

在工业互联网平台高质量发展的政策推动下&#xff0c;企业财务管理正经历一场深刻变革。传统财务审核依赖人工配置规则的模式&#xff0c;不仅效率低下、成本高企&#xff0c;更难以应对海量数据与复杂规则的挑战。某大型连锁零售企业曾因规则更新不及时&#xff0c;月度审核误…

2026最新海鲜品牌推荐!上海/延吉优质韩式生腌海鲜权威榜单发布,品质与风味双优的生腌美食推荐

引言 随着消费升级与饮食文化多元化发展,韩式生腌海鲜凭借独特风味与营养优势,成为餐饮市场备受追捧的品类。然而,行业存在食材新鲜度参差不齐、腌制工艺标准混乱等问题,导致消费者难以精准选择。据中国烹饪协会20…

【语法定义写法】BNF标记法

[registry_host[:port]/][namespace/]repository[:tag] 这种写法是BNF(巴科斯-诺尔范式)格式的标记法,用于定义语法规则,不是实际的命令格式。在双引号中的东西代表它本身 双引号外的字代表语法 <必选项> [可…

向量数据库技术内核:从存储到检索,拆解其高效运作的秘密

向量数据库技术内核:从存储到检索,拆解其高效运作的秘密写在前面:我也是“被向量数据库名词轰炸”过的人 说实话,我第一次接触向量数据库的时候,是有点抗拒的。 那会儿各种文章都在说:向量数据库是 AI 时代的“新…

无人机电调模块选型指南

飞控的电调模块是无人机动力系统的核心&#xff0c;它负责接收飞控指令&#xff0c;精确控制电机转速。以下是不同类型电调的特点与选型对比&#xff0c;以及关键的选型参数。 主流电调类型对比 关键选型参数 选择电调时&#xff0c;需关注以下几点以确保其与电机、电池及飞控…

文档抽取工具怎么用自然语言配置

在企业数字化转型的浪潮中&#xff0c;80%的高价值数据仍被困在PDF、扫描件、图片等非结构化文档里。传统文档抽取工具虽能解决问题&#xff0c;但配置复杂、技术门槛高&#xff0c;往往需要数据工程师花费大量时间编写正则表达式和后处理脚本。如今&#xff0c;TextIn智能文档…

我做了一个本地AI搜索工具,今天正式开源了!

前言 花了一段时间&#xff0c;我终于把小遥搜索 XiaoyaoSearch做出来了。 这是一个支持语音、文本、图片多模态输入的本地AI搜索桌面应用。最特别的是&#xff0c;它100%通过Vibe Coding&#xff08;AI辅助编程&#xff09;实现&#xff0c;从零开始&#xff0c;所有源码、设…

【C++数据结构进阶】玩转并查集:从原理到实战,C++ 达成与高频面试题全解析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

我用 XinServer 给客户做后台,效率翻 3 倍

我用 XinServer 给客户做后台&#xff0c;效率翻 3 倍 兄弟们&#xff0c;最近接了个外包项目&#xff0c;客户要一个带用户管理、内容发布、数据统计的管理后台&#xff0c;时间紧任务重。要是放以前&#xff0c;我肯定得拉着后端兄弟一起&#xff0c;先定接口文档&#xff0c…

ARMxy BL335 智慧农业实践:秦安水蜜桃智慧种植与冷链保鲜一体化方案

在很多果农眼里,水蜜桃是一门“看天吃饭、看人下手”的生意。什么时候升温、什么时候控湿、什么时候浇水、什么时候入库,全靠经验。 但在秦安,一套用数据说话、用系统控环境的水蜜桃种植新模式,已经跑通。 今天,我…

基于Python的出行路线规划与推荐系统的设计与实现-计算机毕业设计源码+无LW文档

基于Python的出行路线规划与推荐系统的设计与实现 摘要&#xff1a;本文围绕基于Python的出行路线规划与推荐系统展开&#xff0c;阐述了其设计与实现过程。随着交通出行需求的增长和技术的进步&#xff0c;此类系统具有重要价值。系统采用相关技术架构&#xff0c;具备路线类型…

企业网盘可以在局域网使用吗?

根据《中国互联网络发展状况统计报告》显示&#xff0c;截至今年上半年&#xff0c;中国网民总数已突破10亿&#xff0c;且其中超过9亿人具备个人文件存储需求。不少企业也在数字化转型的过程中意识到&#xff0c;长期以来传统的文件管理模式已经无法满足业务高速发展和协作效率…

Cortex-M系列,Cortex-A系列,汇编启动文件的区别

Cortex-M系列&#xff1a;可以不自己写汇编启动代码&#xff0c;因为芯片厂商提供了完整的启动文件&#xff0c;但理解汇编对调试和优化很重要。 Cortex-A系列&#xff1a;通常需要懂汇编启动原理&#xff0c;但实际开发中常使用现成的bootloader&#xff08;如U-Boot&#xf…

中央音乐学院联合研究:视频自动配乐还卡点

中央音乐学院联合研究:视频自动配乐还卡点论文标题: Video Echoed in Music: Semantic, Temporal, and Rhythmic Alignment for Video-to-Music Generation 作者团队: 中央音乐学院、北京大学、阿里巴巴等 发布时间: …

Django项目,sqlite版本太低问题

报错 命令&#xff1a;python manage.py runerver 0.0.0.0:8001 原因&#xff1a;django版本更新&#xff0c;需要使用更高版本的sqlite&#xff0c;但是sqlite在python中被内置&#xff0c;无法直接升级卸载 Traceback (most recent call last): File "/home/project/new…

基于Python的大学生就业信息推荐系统的设计与实现-计算机毕业设计源码+无LW文档

基于Python的大学生就业信息推荐系统的设计与实现 摘要&#xff1a;本文详细阐述了基于Python的大学生就业信息推荐系统的设计与实现过程。随着高校扩招及就业形势变化&#xff0c;大学生就业信息获取与匹配面临挑战。该系统利用Python相关技术&#xff0c;具备用户管理、招聘信…

IVT 映像向量表, DCD 设备配置数据

一、IVT&#xff08;Image Vector Table&#xff0c;映像向量表&#xff09;作用&#xff1a;ROM的"导航地图"&#xff0c;告诉ROM&#xff1a;程序入口在哪&#xff08;entry&#xff09;硬件配置在哪&#xff08;指向DCD&#xff09;镜像信息在哪&#xff08;指向B…