摘要: ### KMP 下标从 $1$ 开始求 border: ```cpp int kmp[N]; void KMP(char *s,int len){ for(int i=2,j=0;ir)l=i,r=i+z[i]-1; } } ``` [P5410 【模板】扩展 KMP(Z 函数)](https:// 阅读全文
posted @ 2023-08-06 20:20 SError 阅读(9) 评论(0) 推荐(0) 编辑
摘要: #### A 01 矩阵,每次可以对一个子矩阵取反,问最少多少次操作后,存在一条只向下或右走,只经过 0,从左上角到右下角的路径。 $n,m\le 1000$. 这个 dp 还是非常 trival 的。 ```cpp #include #define N 1010 #define inf (11?f 阅读全文
posted @ 2023-08-06 20:17 SError 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 高次整除分块 对 \(\large\lfloor\frac{n}{i^2}\rfloor\) 整除分块,\(\large r=\sqrt{\lfloor\frac{n}{\lfloor\frac{n}{l^2}\rfloor}\rfloor}\). 容易发现对于 \(i\le n^{\frac{1} 阅读全文
posted @ 2023-08-06 20:17 SError 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 定义 字符串 \(s\) 的 SAM 是一个接受 \(s\) 的所有后缀的最小 DFA(确定性有限(状态)自动机)。也就是: SAM 是一个 DAG。节点为状态,边为转移。 图的源点 \(t_0\) 称初始状态。整张图从 \(t_0\) 开始可以遍历到。 转移标有若干字母,从一个节点出发的所有转移均 阅读全文
posted @ 2023-08-06 20:16 SError 阅读(17) 评论(0) 推荐(1) 编辑
摘要: 群 群是由一个集合及一个二元运算组成的代数结构,记为 \((G,\cdot)\). 其符合群公理,即满足封闭性,结合律,单位元,逆元。 子群 群 \((G,\cdot),(H,\cdot)\),满足 \(H\subseteq G\),则 \((H,\cdot)\) 是 \((G,\cdot)\) 的 阅读全文
posted @ 2023-08-06 20:16 SError 阅读(27) 评论(0) 推荐(0) 编辑
摘要: ## SA ### 基数排序 一般采用 LSD(Least Significant Digital),从键值的最低位开始排序。 ### 定义 记 $suf(i)$ 为起始下标为 $i$ 的后缀。 记 $sa[i]$ 为排名第 $i$ 的后缀的起始位置。 记 $rk[i]$ 为 $suf(i)$ 的排 阅读全文
posted @ 2023-08-06 20:09 SError 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 模拟退火(Simulate Anneal)是一种用于解决问题方案数极大且非单峰函数的随机化算法,原理与金属退火类似。 每次随机出一个新解,若新解更优则接受,否则以一个与温度和与最优解的差相关的概率接受它。 ### 降温 模拟退火有三个参数:初始温度 $T_0$,降温系数 $\Delta$,终止温度 阅读全文
posted @ 2023-08-06 20:09 SError 阅读(188) 评论(0) 推荐(0) 编辑
摘要: Tree \(\rightarrow\) Prufer 每次找到编号最小的叶子结点,在序列中添加其父亲。 删除该节点。 重复如上操作,得到长为 \(n-2\) 的序列。 还原同理。 Prufer 序列是 \(n\) 个点的完全图的生成树与一个长为 \(n-2\),值域 \(\lbrack 1,n\r 阅读全文
posted @ 2023-08-06 20:09 SError 阅读(19) 评论(0) 推荐(0) 编辑
摘要: ### A 排队打水,$n$ 个人,$m$ 个水龙头,最小化总时间。 显然是一个 trival 的贪心。 ```cpp #include #define N 1010 #define pii pair #define mp make_pair #define fi first #define se 阅读全文
posted @ 2023-08-06 20:07 SError 阅读(16) 评论(0) 推荐(0) 编辑
摘要: Definition 第二类斯特林数 \(\begin{Bmatrix}n\\k\end{Bmatrix}\),意义为将 \(n\) 个不同的元素分为 \(k\) 个非空子集的方案数。 有 \(\displaystyle\begin{Bmatrix}n\\k\end{Bmatrix}=\begin{ 阅读全文
posted @ 2023-08-06 20:07 SError 阅读(62) 评论(0) 推荐(0) 编辑
摘要: ### A 求把一张无向图的所有边变为有向边,使得各点出度为 $1$ 的方案数。 答案对 $998244353$ 取模。 $1\le n,m\le 2\times 10^5$. 首先一定有 $n=m$,然后环上的边有两种取法。 把环数找出来,然后判断这个连通块中 $E$ 是否等于 $2V$. ``` 阅读全文
posted @ 2023-08-06 20:06 SError 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 难啊,很难啊(悲) ### A [Mode](https://codeforces.com/gym/104337/problem/B) 记 $f(x)$ 为数字串 $x$ 中数码众数的出现次数。 求 $\sum_{i=l}^{r}f(i)$. $1\le T\le 10^3$,$1\le l,r\l 阅读全文
posted @ 2023-08-06 20:05 SError 阅读(21) 评论(0) 推荐(0) 编辑
摘要: [高思诚](https://www.luogu.com.cn/user/253936)是后门中学的学生。 $\text{On 2023.5.31}$. ![](https://cdn.luogu.com.cn/upload/image_hosting/nh6hzmtb.png?x-oss-proce 阅读全文
posted @ 2023-08-06 20:05 SError 阅读(10) 评论(0) 推荐(0) 编辑
摘要: OGF & 其他 奇怪的构造和技巧可能也放进来了。 *P4451 [国家集训队]整数的lqp拆分 求 \[\sum_{\sum_{i=1}^{m}a_i=n,a_i>0}\prod_{i=1}^{m}f_{a_i} \]\(f\) 是斐波那契数列,\(f_0=0\),\(f_1=1\). 答案对 \ 阅读全文
posted @ 2023-08-06 20:05 SError 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 适用范围: - 离线题,区间伸长容易维护信息,缩短反之。 当然有只删的回滚。 去年暑假贺的板子。 [P5906 【模板】回滚莫队&不删除莫队](https://www.luogu.com.cn/problem/P5906) 求区间相同的数的最远距离。 $1\le n,m\le 2\times10^5 阅读全文
posted @ 2023-08-06 20:04 SError 阅读(30) 评论(0) 推荐(0) 编辑
摘要: ### T1 已知 $\gcd(a,b)=G,\text{lcm}(a,b)=L$,求 $\min\{a+b\}$,无解 $-1$. $1\le T\le 5$,$1\le G,L\le 10^{12}$. 无解即当 $G\not|\space L$. 有 $$\frac{a}{G}\cdot\fr 阅读全文
posted @ 2023-08-06 20:03 SError 阅读(22) 评论(0) 推荐(0) 编辑
摘要: ### T1 已知 $a,b$ 为互素的正整数,求最大的 $k$, $$ax+by=k$$ 无非负整数解。 [P3951 [NOIP2017 提高组] 小凯的疑惑 / [蓝桥杯 2013 省] 买不到的数目](https://www.luogu.com.cn/problem/P3951) 小丑,答案 阅读全文
posted @ 2023-08-06 20:02 SError 阅读(6) 评论(0) 推荐(0) 编辑
摘要: [P4719 【模板】"动态 DP"&动态树分治](https://www.luogu.com.cn/problem/P4719) 带点权的树,每次修改一个点的权值,求树的最大权独立集。 $1\le n,m \le 10^5$,点权的绝对值 $\le 10^2$. 若不带修,先设 $f_{u,1/0 阅读全文
posted @ 2023-08-06 20:02 SError 阅读(8) 评论(0) 推荐(0) 编辑
摘要: $\text{Kruskal}$ 重构树基于 $\text{Kruskal}$ 最小生成树算法,通过将边权化为点权实现一些奇妙东西。 ### 构造 与 $\text{Kruskal}$ 最小生成树算法类似。 当连边 $(u,v,w)$ 时: - 新建节点 $x$,将其点权设为 $w$. - 设 $u 阅读全文
posted @ 2023-08-06 20:00 SError 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 板子 先放一个 \(\rm NTT\) 的板子。 #include<bits/stdc++.h> #define N 1<<? #define P ? using namespace std; int qpow(int k,int b){ int ret=1; while(b){ if(b&1)re 阅读全文
posted @ 2023-08-06 19:59 SError 阅读(24) 评论(0) 推荐(0) 编辑