2025年5月25日
摘要: 欧拉序 前置知识 欧拉序 欧拉序所做的,就是在访问节点时记录一遍,每次回溯时再记录一遍。 正片 \(u\) 和 \(v\) 两节点的 LCA 就是欧拉序中 \(u\) 第一次出现的位置和 \(v\) 第一次出现的位置之间的所有节点中深度最浅的点。 证明显然,从 \(u\) 到 \(v\) 会走过 \ 阅读全文
posted @ 2025-05-25 15:01 PengDave 阅读(1) 评论(0) 推荐(0)
  2024年8月25日
摘要: 题面 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 思路 这次我们要使用的知识点是 \(dfs\) 和并查集,这个 \(tarjan\) 是离线的,我们要先把每个点的每一个要跟它求 \(LCA\) 的点给记录下来,接下来用 \(dfs\) 跑这么个流程: 遍历这个点的每个子结点并进 阅读全文
posted @ 2024-08-25 19:09 PengDave 阅读(15) 评论(0) 推荐(0)
摘要: 普通版 前言 莫队是由集训队大佬莫涛提出来的,在此再次膜拜大佬! 思想 普通莫队主要用于离线的区间查询操作,当然,也不是所有的都适用,当一个区间 \([l,r]\) 的答案可以用 \(O(1)\) 的时间转化成 \([l+1,r],[l-1,r],[l,r+1],[l,r-1]\) 的答案,我们就可 阅读全文
posted @ 2024-08-25 19:07 PengDave 阅读(14) 评论(0) 推荐(0)
摘要: 简单版 题目描述 给定 \(n\) 个模式串 \(s_i\) 和一个文本串 \(t\),求有多少个不同的模式串在文本串里出现过。 两个模式串不同当且仅当他们编号不同。 思路 我们可以将所有模式串存进 \(trie\) 树中,像这样: 此时如果我们朴素地查找,那显然会超时,因此我们可以使用类似 \(K 阅读全文
posted @ 2024-08-25 19:03 PengDave 阅读(8) 评论(0) 推荐(0)
摘要: 思想 我先给出一些定义: 定义一个结点的重子节点为其子节点中子树节点数最大的子节点,如有多个,随便取一个作为重儿子,如果没有子节点,就没有重儿子。 定义一个结点的轻子节点为其除重子节点外的子节点。 从这个节点到重子节点的边为重边,到其他子节点的边为轻边。 由重边首位相连的链称为重链。 把落单的结点也 阅读全文
posted @ 2024-08-25 18:54 PengDave 阅读(49) 评论(0) 推荐(0)