摘要: AC 自动机1 前置知识:\(KMP\),字典树。 \(AC\) 自动机,不是用来自动 \(AC\) 题目的,而是用来处理字符串问题的(虽然确实可以帮助你 \(AC\))。 这里总结了 \(AC\) 自动机三大步骤。 插入 考虑字典树,我们直接把所有模式串插入到字典树内即可,这并不困难,代码: vo 阅读全文
posted @ 2024-07-29 00:53 zxh923 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 基础 下文的字符串下标皆从 \(1\) 开始。 考虑定义一个数组 \(ne_i\),指的是设字符串 \(t\) 的前 \(i\) 位为 \(s\)。字符串 \(s\) 的前 \(ne_i\) 位与后 \(ne_i\) 位完全相同,且 \(ne_i\) 取到了最大值,并且 \(ne_i\) 不为字符串 阅读全文
posted @ 2024-07-28 20:28 zxh923 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 例题 MKTHNUM - K-th Number 考虑如果我们对每个操作进行二分怎么做。 显然是对这个区间不大于二分值 \(mid\) 的数统计个数,看个数 \(num\) 和 \(k\) 的大小关系。如果 \(num\) 更大,证明 \(mid\) 大了,如果 \(num\) 更小,证明 \(mi 阅读全文
posted @ 2024-07-27 12:37 zxh923 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 优化动态规划 序列 首先要会最长上升子序列的转移,这里就不说了。 我们 \(i\) 位置的初始值为 \(a_i\),可能变成的最大值为 \(mx_i\),可能变成的最小值为 \(mn_i\)。 然后如果 \(j\) 要转移到 \(i\),则需要满足:\(j<i,mx_j\le a_i,a_j\le 阅读全文
posted @ 2024-07-26 19:56 zxh923 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 简介 前置芝士:归并排序。 \(cdq\) 分治是个离线算法,可以解决三维偏序或者优化 \(dp\)。 陌上花开 维护三维偏序有个口诀:一维排序,二维归并,三维数据结构。 考虑第一维直接排序解决掉,然后还剩两维。 我们考虑第二维用归并排序解决掉。然后假设当前区间 \([l,r]\),区间中点 \(m 阅读全文
posted @ 2024-07-23 22:55 zxh923 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 给个链接:集合。 很神秘的题目。基本上看到之后就可以想到哈希。 首先想到一个比较神秘的暴力。就是对于每个询问,扫一遍所有 \(a\) 中的数出现的位置,把它弄成一个哈希值(具体怎么弄随意)存到 set 里,然后看看是不是和 \(b\) 中的数出现的位置这样操作后的集合完全相等。事实上就是判断是否对于 阅读全文
posted @ 2024-07-21 12:24 zxh923 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 普通莫队 DQUERY - D-query 先想一下最朴素的暴力怎么写。显然可以用一个 \(cnt\) 数组记录每种元素的出现次数,然后如果这种元素是第一次出现,则增加答案,时间复杂度 \(O(nq)\)。 然后考虑如果如何用一个已经求出来答案的询问推出另外一个询问的答案。 显然我们要增加一部分数和 阅读全文
posted @ 2024-07-19 18:00 zxh923 阅读(4) 评论(0) 推荐(0) 编辑
摘要: Blood Cousins 前置知识:线段树合并。 我们先把题目转化一下。这里先设 \(v\) 的 \(p\) 级祖先为 \(u\),事实上要求的东西就是 \(u\) 的 \(p\) 级后代的个数减 \(1\),减 \(1\) 是因为要把自己减去。显然这个目标点 \(t\) 要满足两个要求: \(t 阅读全文
posted @ 2024-07-18 12:12 zxh923 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 权值线段树 线段树在这里作为前置知识,我们就不说了,而且权值线段树也不是核心内容,不会大篇幅讲。 首先,权值线段树在维护什么?维护的是桶。 然后,权值线段树有什么用?可以求一些序列的第 \(k\) 大之类的问题。 于是我们放个板子题。 第 k 小整数 简单题,直接看代码和注释就行,当然也可以使用线性 阅读全文
posted @ 2024-07-17 17:26 zxh923 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 基本思想 放在前面:该数据结构的时间复杂度很玄学,一般用于骗分,当然不排除作为正解的可能性。 下面简称该数据结构为 \(KDT\). \(KDT\) 是一种可以高效处理 \(k\) 维空间信息的数据结构。换句话说,他是维护 \(k\) 维空间 \(n\) 个点的一种平衡树。 一般在算法竞赛中,我们需 阅读全文
posted @ 2024-07-16 13:48 zxh923 阅读(1) 评论(0) 推荐(0) 编辑