随笔分类 - 笔记
摘要:## slope trick ### 概述 在 $dp$ 过程中,可以维护凸函数的方法,要求 $dp$ 值呈凸函数且其斜率均为整数。 具体来说,是记录凸函数斜率的变化值,即在什么位置斜率$\plusmn 1$,例如凸函数 $f(x) = |x|$,它由一条斜率为 $-1$ 和 一条斜率为 $1$ 的
阅读全文
摘要:## 反演 反演,可以理解为两个事物通过某种关系的互相转化。 #### 基本推论 设 $F,G$,满足 $F(n) = \sum V[n,i]G(i)$,其中 $V$ 为矩阵,将 $F,G$ 看成列向量,可以写做 $F = V * G$,那么我们可以容易推出 $G = V^{-1} * F$,这就是
阅读全文
摘要:第二类斯特林数 第二类斯特林数$\begin{Bmatrix} n \k \end{Bmatrix}$表示把$n$个不同元素划分成$k$个相同的集合中(不能有空集)的方案数。 递推式 $$\begin{Bmatrix} n \k \end{Bmatrix} = \begin{Bmatrix} n -
阅读全文
摘要:二次剩余 定义 对于同余方程 $x^2 \equiv n \pmod p$ 有解,则称 $n$ 为二次剩余,否则 $n$ 为非二次剩余,其中 $p$ 为奇素数。 欧拉准则 用于判断一个数 $n$ 是否为二次剩余。 当 $n^{\frac{p-1}{2}} \equiv 1$ 时,$n$ 为二次剩余;
阅读全文
摘要:多项式牛顿迭代 对于$G(f(x)) = 0$,求解 $f\pmod {x^n}$ $x^{\left\lceil\frac{n}{2}\right\rceil} $ 意义下的解 $f_{0}\left(x\right)$,要求模 $x^{n}$ 意义下的解 $f\left(x\right)$。 有
阅读全文
摘要:set auto it = tree.insert().first//返回迭代器位置 int flag = tree.insert().second//返回插入是否成功 $erase(x)$删除值为$x$的所有元素,返回删除元素的个数。 $erase(pos)$删除迭代器为$pos$的元素,要求迭代
阅读全文
摘要:后缀自动机 简介 给定一个字符串$S$,我们把$S$的每一个后缀都插入$trie$中。这样这个$trie$就能处理许多的问题,但这颗$trie$的大小是$O(n^2)$级别的,所以我们要用到后缀自动机。 构建 定义$endpos(s)$为字串$s$在原串$S$中出现的位置。那不同$endpos(s)
阅读全文
摘要:multiset 可重复元素的$set$。 定义: struct nd{ int x; friend bool operator ()(nd x,nd y){return x.x < y.x;}//可自定义比较 }; multiset<nd> tree; 操作: auto it = tree.beg
阅读全文
摘要:带权并查集 ~~以前天天摸鱼,导致现在才学这东西~~ 什么是带权并查集? 没错,就是并查集带了边权。 那我们可以考虑维护自己到父亲的权值,在路径压缩时更新即可。 利用一道例题 [NOI2002] 银河英雄传说 设$f_i$为舰队$i$和舰队$fa_i$间多少个舰队。 对于$M$ $x$ $y$操作,
阅读全文
摘要:参考博客 再探模拟费用流一类问题 Cold_Chair 模拟费用流 费用流的本质其实是一种可以反悔的贪心,但对于一些题目费用流太过于复杂,无用的边数太多,所以可以考虑模拟费用流。 一种模型 一条数轴上,有$n$只老鼠,$m$个洞,一个洞最多容纳一只老鼠。老鼠只能往左走,走到一个洞的代价为坐标差绝对值
阅读全文
摘要:普通莫队 对于询问奇偶分块 bool cmp(nd x,nd y) { int lb = x.x / bl,rb = y.x / bl; if (lb ^ rb) return x.x < y.x; // l,r不同块以l排序 return lb & 1 ? (x.y > y.y) : (x.y <
阅读全文
摘要:$Code$ #include<cstdio> #include<algorithm> using namespace std; const int N = 2e5 + 5; int rt[N << 5],lc[N << 5],rc[N << 5],a[N],b[N],n,m,tot = 0,sum
阅读全文
摘要:$\text{Solution}$ 这是一道回文树模板题。 回文树 回文树是利用回文串的包含关系建的一个图。 首先回文树有奇根,偶根,偶根的$fail$指针指向奇根。 设$fail_i$表示标号为$i$的回文串失配后,他的最长后缀回文串的标号。 利用$fail$可以构造出回文树,考虑一个一个字符加入
阅读全文
摘要:#include<cstdio> #include<algorithm> #include<ctime> using namespace std; int n,m,root,tot = 0; struct tree{ int ls,rs,v,siz,rnd,tag; }tr[100005]; int
阅读全文
摘要:#include<cstdio> #include<algorithm> #include<ctime> using namespace std; int n,tot = 0; struct tree{ int siz,ls,rs,v,rnd; }tr[100005]; int add(int va
阅读全文
摘要:FFT #include<cstdio> #include<algorithm> #include<cmath> using namespace std; const double Pi = acos(-1.0); int n,m,rev[2100005]; struct complex{ doub
阅读全文
摘要:https://paste.ubuntu.com/p/TvcscVtsYf/ #include<bits/stdc++.h> using namespace std; const long long mo = 23333333333333333ll; long long mul(long long
阅读全文
摘要:Code #include<cstdio> #include<iostream> #include<cstring> using namespace std; int tot=1,h[500000],n,m,s,t,flow[500000],up[500000],q[500000],dis[5000
阅读全文
摘要:Trie $Trie$的结构非常好懂,我们用$\delta(u,v)$表示结点$u$的$v$字符指向的下一个结点,或着说是结点$u$代表的字符串后面添加一个字符$c$形成的字符串的结点。($c$的取值范围和字符集大小有关,不一定是 \(0 \sim 26\)。) $Trie$的简图: \(Code\
阅读全文
摘要:### 转载[HowarLi大佬的博客](https://blog.csdn.net/HOWARLI/article/details/72765440) ## queue #### 定义: ##### $queue a$ #### 操作: ##### $q.push(x)$:将x元素接到队列的末端
阅读全文