随笔分类 - 知识点总结
摘要:约定:以下内容中$\(表示普通乘法,\)\cdot$为点乘,$\times$为叉乘 代码中的表示叉积,&表示点积, ^表示数乘 (当然是从xzy学长那儿学来的习惯啦) 文末有惊喜 前置知识 向量 向量基本概念与运算详见《2020人教版高中数学·选修一》 点积 又叫内积、数量积, 计算出来的结果是数值
阅读全文
摘要:AC自动机基础 简介 AC自动机(Aho-Corasick automaton), 也可以叫ACAM。 是一种复杂度线性的字符串算法,适用于字符串匹配及相关问题 算法思路 总的来说就是将kmp的next数组的思想运用到Trie树上 但是与next数组不同的是: 名字不同,ACAM里的叫做fail f
阅读全文
摘要:李超线段树入门 算法总概 李超线段树用于维护线段和直线与某条直线交点的最值 类似一个凸包的东西 大致思路: 插入时通过线段树记录与更新,每个区间可能的最优的直线 查询时,对于覆盖在某个点之上的所有区间求其最值 插入的细节(现在考虑最大值): 若当前区间没有直线,加入当前直线即可 若**"区间直线"整
阅读全文
摘要:朱刘算法 最小树形图 即:有向图中的最小生成树(外向树) 大致思路 1.对每个点求出边权最小的入边,并记录 2.看1,中组成的图有无环,且能否组成树 3.若存在环,则将环缩成一个点,重新赋边权,回到1. 代码 (洛谷模板) #include<bits/stdc++.h> using namespac
阅读全文
摘要:SA算法入门 后缀数组是什么? 以下用$S_i$表示字符串S的[i...n]子串部分 对于一个字符串S的所有后缀,即所有 \(S_i\), 按字典序进行排序 我们可以求出两个东西: 一个叫 rank[i], 指$S_i$在所有后缀中的排名 一个叫 sa[i] , 指排名为i的后缀的是$S_{sa[i
阅读全文
摘要:ST表 好久没写了, 所以写篇博客来回忆一下 用于解决RMQ问题 主要运用倍增的思想 具体做法: 1. 设f[i][j]为 \([i,i+2^j]\) 区间内的极值, 然后预处理 2. 查询时: 设查询区间长度为len,返回左端点为起点长度为$ 2^{log_2(len)} $ 与右端点为终点同等长
阅读全文
摘要:前言: 2021省选最后三天了,开始补去年省选的题目...发现了毒瘤的冰火战士 题意 解释不清了...戳这里 Solution 对于每一时刻而言,冰火战士会分别组成上升和下降的序列,为了让冰火战士的能量总消耗尽量多 即: 冰人的前缀和与火人的后缀和尽可能相等 很容易想到,若冰人前缀和看做一条上升的直
阅读全文
摘要:题意 传送门 题意简化: 给定一个带权无向图,边分为黑白两色,求白边数量为k时的最小生成树 \(k<=n<=5*10^4, m<=10^5\) Solution WQS二分 此题作为WQS的入门题, 先得讲讲WQS二分 先谈谈自己的感性理解: WQS二分主要用于: 消除求解最值问题中的物品个数限制
阅读全文
摘要:题面 传送门 题意简化: 给定一个带权DAG,总共m个人,每个点正好要有Vi个人经过,求人的总花销最小(每个人分开计算花销) m<=79, n<=100 Solution 是上下界网络流的模板题: 对于每个点流量的限制Vi,常规思路:拆点将点限制转为边限制 所以就成了上下界网络流跑费用流,但是此处上
阅读全文
摘要:龟速乘 按快速幂的思想处理加法即可,可以及时取模,有效防止爆long long 代码 ll mul(ll x,ll y) { ll s=0; while(y) { if(y&1) s=(s+x)%mod; x=(x+x)%mod, y>>=1; } return s; }
阅读全文
摘要:矩阵乘法 一个可用性强的板子 struct matrix{ int n,m,a[5][5]; matrix () {n=m=0; memset(a,0,sizeof(a));} //空矩阵 matrix (int k) {n=m=k; memset(a,0,sizeof(a)); for(re in
阅读全文
摘要:CF558E 题意 Luogu 给定一个长度不超过10^5的字符串(小写英文字母),和不超过50000个操作。 每个操作 L R K 表示给区间[L,R]的字符串排序,K=1为升序,K=0为降序。 输出最终的字符串。 题解 因为字符集只有26,所以区间内重复元素个数很多,排序后相同元素会聚拢,即区间
阅读全文
摘要:概述 & 用法 高斯消元就是一种解方程的方法 现在有个n个方程,n个未知数组成的方程组: \(a_{i,1}*x_1+a_{i,2}*x_1...+a_{i,n}*x_n=b_i\) . . . 然后我们把系数都拿出来组成一个 \(n*(n+1)\) 的矩阵 接下来就是消消消 具体方法: 按列消除,
阅读全文
摘要:用法&&概述 线性基可以看做是一种数据结构,可以用来维护序列的异或相关(比如去重,求极值) 似乎还可以求异或后的第k小值,但我不会 对于值域,转成二进制之后的每一位 i 对应一个数 a[i],然后维护这个数。 a[i] 它的二进制最高位就是第i位 具体维护方式是: 对于每次插入一个新的值 x 进行如
阅读全文
摘要:这篇文章是写给自己看的,可能不会在意某些细节 参考博客(关键是有图好理解):https://www.cnblogs.com/cjyyb/p/7499020.html 前言 Splay是平衡树的一种 它跟treap不同的是,它可以智能(不需要去刻意找方向)旋转,也可以实现区间翻转,个人感觉也好写好调一
阅读全文
摘要:权值线段树 顾名思义,就是以权值为下标建立的线段树。 现在让我们来考虑考虑上面那句话的产生的三个小问题: 1. 如果说权值作为下标了,那这颗线段树里存什么呢? ————— 这颗线段树中, 记录每个值出现的次数 2.权值很大怎么办?数组空间不够啊 ————— 可以先离散化,再记录 3.那权值线段树到底
阅读全文
摘要:问题 传送门 看到这个问题感觉很难??? 不用怕,往下看就好啦 假如你不会CRT也没关系 EXCRT大致思路 先考虑将方程组两两联立解开,如先解第一个与第二个,再用第一个与第二个的通解来解第三个...(以此类推) 那么怎么解第一个与第二个同余方程呢? \[ \begin{cases} x \equi
阅读全文
摘要:Lucas定理 先上结论: 当p为素数: \(\binom{ N }{M} \equiv \binom{ N/p }{M/p}*\binom{ N mod p }{M mod p} (mod p)\) 证明:令 \(s=\lfloor \frac{n}{p} \rfloor\),\(q=n\bmod
阅读全文
摘要:线性筛 我已经掌握埃氏筛了 为什么还要学线性筛??? 线性筛的时间复杂度是严格 \(O(N)\) 的, 而埃氏筛的复杂度是 \(O(N * log_{2}( log_{2}(N) )\) 看上去并没有快多少 实际也是, 但在处理一些大数据时,差距就凸显出来了 算法思路 概述: 和埃氏筛类似的 线性筛
阅读全文