随笔分类 - 算法
摘要:并查集模板: #include <iostream> #include <vector> using namespace std; // 初始化父节点数组 vector<int> fa; // 查找根节点并进行路径压缩 int findParent(int x) { if (x == fa[x])
阅读全文
摘要:1736年29岁的欧拉向圣彼得堡科学院递交了《哥尼斯堡的七座桥》的论文,在解答问题的同时,开创了数学的一个新的分支——图论与拓扑学,也由此展开了数学史上的新历程。 七桥问题提出后,很多人对此很感兴趣,纷纷进行试验,但在相当长的时间里,始终未能解决。欧拉通过对七桥问题的研究,不仅圆满地回答了哥尼斯堡居
阅读全文
摘要:最长上升子序列 给定一个长度为 NN 的数列,求数值严格单调递增的子序列的长度最长是多少。 输入格式 第一行包含整数 NN。 第二行包含 NN 个整数,表示完整序列。 输出格式 输出一个整数,表示最大长度。 数据范围 1≤N≤10001≤N≤1000,−109≤数列中的数≤109−109≤数列中的数
阅读全文
摘要:个人最喜欢的算法之一,这是一种犹如洪水般的算法,O(n)的时间复杂度。 ##红色不可流动 ,橙色可流动,黄色所在点,蓝色在队列里。 就像洪水一样,当你得到某个位置时候,开始判断它的上下左右是否可流动并判断有没有流过。 开始判断它的上下左右是否可流动并判断有没有流过,若可以放入上下左右可流动的位置。
阅读全文
摘要:字典树是一个良好的查询与存储字典的数据结构,用于查询字符串的前缀。 这里我们看如下图。其中我们对一个树模型,插入abc , abd tl。 我们发现,abc和abd前缀一样。所以前缀ab已经存在过,就没有创建新的节点。 其实就是在root中插入字符,如果发现这个字符没有插入过,我们就用++cnt'创
阅读全文
摘要:字符串最小表示法 其实就是用双指针进行一个自我比较。 模板: #include <iostream> #include <string> using namespace std; int main() { string s; cin >> s; int original_length = s.siz
阅读全文
摘要:虽然我们可以根据板子题:兔子和兔子同样实现线性字符串匹配的速度。 但是也有更好的算法KMP,其更高效快捷。 先看看什么是KMP算法? 例如 S = ababccabab 与T = abacabab 我们来看next数组 ,依次S[i]与T[i]进行比较,若S[i]!= T[i] 我们只需要读取nex
阅读全文
摘要:题目描述 很久很久以前,森林里住着一群兔子。 有一天,兔子们想要研究自己的 DNA 序列。 我们首先选取一个好长好长的 DNA 序列(小兔子是外星生物,DNA 序列可能包含 2626 个小写英文字母)。 然后我们每次选择两个区间,询问如果用两个区间里的 DNA 序列分别生产出来两只兔子,这两个兔子是
阅读全文
摘要:给定一个长度为 nn 的序列 AA,AA 中的数各不相同。 对于 AA 中的每一个数 AiAi,求: min1≤j<i|Ai−Aj|min1≤j<i|Ai−Aj| 以及令上式取到最小值的 jj(记为 PiPi)。若最小值点不唯一,则选择使 AjAj 较小的那个。 输入格式 第一行输入整数 nn,代表
阅读全文

浙公网安备 33010602011771号