学习笔记
Alstein
十年oi一场空,不开longlong见祖宗
展开
-
IDEA启动tomcat后访问错误:unable to ping server at localhost:1099解决
大佬解决:点我点我原创 2020-11-17 15:16:48 · 1297 阅读 · 0 评论 -
树链剖分
参考(还有图,讲的明白!)树链剖分:即把树分成多条链来进行所需要的操作,比较常见的的是重链剖分。先介绍部分概念重儿子:一个节点的所有儿子中子树最大的那个儿子轻儿子:除了重儿子之外的儿子重边:连接重儿子的边称为重边轻边:连接轻儿子的边重链:由重边组成的树链;如果单个结点也可视为重链,就可以把整棵树剖分成多条重链。我们可以通过一次dfs找出每个结点的重儿子,然后再进行一次dfs把树剖分...原创 2020-03-17 10:54:05 · 181 阅读 · 0 评论 -
最大流(模板EK,dinic,isap)+最小费用最大流(spfa)
模板题这三种算法基于寻找增广路径来求解最大流,当一个网络图中不存在增广路径时我们就得到了最大流;1.EK://直接使用bfs找最近的增广路径,每找到一条就更新残余网络,然后继续找,直到不存在为止,这个真好懂^ V ^#include<bits/stdc++.h>#include<iostream>#include<algorithm>#includ...原创 2020-03-03 16:46:18 · 264 阅读 · 0 评论 -
Manacher算法
Manacher算法是求解一个字符串的最长回文串长度的线性做法;如果暴力求解最长回文串,也就是枚举每个回文串的中心,之后向两边拓展的方法, 复杂度达到了O(nn),而Manacher则将其优化到了O(n);首先,一个字符串的最长回文串可能有奇数个字符,也可能有偶数个,Manacher算法为了统一,进行了预处理,在每个字符的前面和后面都加上了一个从未在原字符串中出现过的字符,从而使得所有回文串长度...原创 2020-02-18 12:00:28 · 117 阅读 · 0 评论 -
拓展kmp(2020新年第一篇博客 学无止境冲啊)
拓展kmp算法可解决以下问题,给定两个字符串s1和s2,可以求出s1的extend数组,其中extend[i]表示s1从第i位开始的子串和s2的最大公共前缀长度,举个例子:可以看到extend[0]=4最长公共前缀是abab...原创 2020-01-01 17:04:52 · 156 阅读 · 0 评论 -
最近公共祖先(LCA)算法
最近公共祖先:设结点x是u,v的祖先并且x的深度是u,v所有共同祖先中最大的,则称x是u,v的最近公共祖先;LCA的求解算法有三种:1.tarjan算法求解原创 2020-02-07 11:58:08 · 739 阅读 · 0 评论 -
学习笔记:KMP
kmp用于在一个字符串中寻找一个模式串。kmp讲解其中next数组的求解与用法值得注意。利用next数组求解循环节:假定一个字符串长度为len且len%(len-next[len])=0,那么其最小循环节的长度为len-next[len],而且这个字符串由该循环子串重复len/(len-next[len])构成;如果len%(len-next[len])!=0,说明还要加一些才能成为循环字...原创 2019-12-30 17:40:20 · 116 阅读 · 0 评论 -
带权并查集+种类并查集
好久没写博客了,差点忘了在哪儿写,不写博客是真的对学过的东西一点印象都没有T_T;丧心病狂的大佬挂了一道种类并查集+dp的题,然而我却连种类并查集是什么都不知道,赶紧学习缩小差距;1.带权并查集(对这两个的关系还有点儿懵,先上再说)就像名字一样,带权并查集就是要多维护一个权值数组;和普通的并查集大同小异,用f[]数组存父节点,val存当前结点到父亲结点的权值,首先是初始化void Ini...原创 2019-10-12 21:24:21 · 1014 阅读 · 0 评论 -
素数筛选法
埃氏筛法:mark标记是否是素数,从2开始,每到一个素数,就把以这个素数为因子的后面的数全部标记为不是素数。依据就是任何一个数可以拆分为几个素数的乘积。枚举的时候i到n结束,可能可以更少吧。void I_Shai(int n){ mark[1]=1; for(int i=2;i<=n;i++) { if(!mark[i]) { ...原创 2019-07-11 18:46:14 · 129 阅读 · 0 评论