线段树
文章平均质量分 50
日常懵
菜鸟一只
展开
-
树 链 剖 分
树链剖分树链剖分用于将树分割成若干条链的形式,以维护树上路径的信息。定义重子节点 :其子节点中子树最大的子结点。如果有多个子树最大的子结点,取其一。如果没有子节点,就无重子节点。轻子节点: 表示剩余的所有子结点。从这个结点到重子节点的边为 重边。到其他轻子节点的边为 轻边。若干条首尾衔接的重边构成 重链。初始化两遍dfs第一次处理每个节点的dep(深度) , fa(父亲节点) ,sz(子树大小), son(重链结点)void dfs1(int u , int v , int de )原创 2022-04-13 09:05:35 · 330 阅读 · 0 评论 -
E. William The Oblivious
E. William The Oblivious[链接](E. William The Oblivious)题意:给你一个长为 n 的字符串,只包含 abc 三种字符。q 次操作,每次把一个位置的字符改成给定字符,询问当前串至少修改几次满足不包含子串 abc。修改指把一个位置的字符修改成 a、b、c 三种字符之一。线段树维护记录每个区间有多少a b c ab bc abc维护区间a = la + ra ;b = lb + rb ;c = lc + rc ;ab = min(la + rab原创 2021-12-19 11:06:12 · 155 阅读 · 0 评论