摘要:
教授要求规范代码风格,具体要求如下: 引用库命令和库名称之间加空格 例如 #include <cstdio> 运算符号两侧要加空格 例如 int a = 9 + 6; 大括号换不换行均可(但我倾向换行) 例如 for(int i = 0 ; i < N ; i ++) { // do somethi 阅读全文
摘要:
发现之前没有整理过线段树的代码,填一下坑。 下面是洛谷P3372的模板代码。 #include<cstdio> #include<iostream> #include<vector> #define int long long namespace Zhang_Tao { inline int Rea 阅读全文
摘要:
CSP-S 2021 爪巴记 Day -1 和 sxy 在家里打原神,打了一上午。。。。 下午疯狂默写各种数据结构、数学板子。 Day 1 上午坐车去了日照,没啥好说的,下午考试。 提前进了考场试机,发现万恶的 CCF 用 c++14 评测,但是本地的编辑器只能开到 c++11 ,太草了。 花了半个 阅读全文
摘要:
后缀自动机(SAM) 为了方便,我们做出如下约定: “后缀自动机” (Suffix Automaton) 在后文中简称为 SAM 。 记 \(|S|\) 为字符串 \(S\) 的长度。 记 \(\sum\) 为字符集,记 \(|\sum|\) 为字符集大小。 关于 SAM 的复杂度证明在 OI Wi 阅读全文
摘要:
AC 自动机套路题 这两天刚学了 AC 自动机,写了一些练习题,总结一下,顺便与大家分享一下经验。 下面一共有 A-G 七道题目,大致综合考虑思维难度+代码难度进行由低到高排序(尽管洛谷上的评级都是 省选/NOI- )。 套路类型 1 :标记法优化跳 fail 树的复杂度 这个包括上篇博客中提到的用 阅读全文
摘要:
AC 自动机 学习 AC 自动机的第一要义:记住它不能帮你自动 AC !!! AC 自动机(以下简称 ACAM ),是一种多模式串匹配算法,它是由贝尔实验室的两位研究人员 Alfred V. Aho 和 Margaret J.Corasick 于1975年发明。 提到模式串匹配算法,你也许会想到大名 阅读全文
摘要:
二次扫描与换根法 在一类树上问题中,需要我们以每个结点为根统计一些信息。如果我们暴力枚举每个点为根,假设统计复杂度是 $O(P)$ 的,那么总复杂度会达到 $O(NP)$ 的级别,这样显然太慢了。这种问题我们一般通过两次扫描、换根的方法来优化复杂度,具体分为两步: 第一次扫描,任选一个结点为根进行树 阅读全文
摘要:
虚实链剖分 (Link-Cut-Tree) 公元 20XX 年,序列上的数据结构题已经被出题人玩烂了。这些毒瘤们凑在一起,想着如何更新题目的套路。突然,一位毒瘤出题人大开脑洞:“我们为什么不把序列问题搬到树上呢?” 于是树上毒瘤数据结构从此诞生,不过我们也有应对方法——树链剖分。 树链剖分分为三种: 阅读全文
摘要:
扫描线 有时候,我们需要在二维的平面上维护一些问题,但是二维数据结构比较难写,这时就用到了扫描线算法。 扫描线提供了一种把静态的二维问题变成动态的一维问题的思路,也即“降维打击”,这使得对数据的维护方便许多。 (本博客的图大部分来自洛谷 @paperghost_ls 的博客,侵删。) Part 1 阅读全文
摘要:
轻重链剖分 公元 20XX 年,序列上的数据结构题已经被出题人玩烂了。这些毒瘤们凑在一起,想着如何更新题目的套路。突然,一位毒瘤出题人大开脑洞:“我们为什么不把序列问题搬到树上呢?” 于是树上毒瘤数据结构从此诞生,不过我们也有应对方法——树链剖分。 树链剖分分为三种:轻重链剖分、长链剖分、虚实链剖分 阅读全文