算法-哈希表
哈希表存储结构: 1拉链法 2开放寻址法哈希处理:在哈希表中一般只有添加和查找哈希表的作用:将一个较大的空间映射成从0-N h(x)映射(0,10^5)如何映射x mod 10^5 将所有数取余保存在0 - 10^5里面(取模的数一般用质数)
快速求一个质数
for(int i = 1e5; ...
算法-堆排序
堆排序输入一个长度为n的整数数列,从小到大输出前m小的数。
输入格式第一行包含整数n和m。
第二行包含n个整数,表示整数数列。
输出格式共一行,包含m个整数,表示整数数列中前m小的数。
数据范围1≤m≤n≤1051≤m≤n≤105,1≤数列中元素≤1091≤数列中元素≤109
输入样例:5 3
4 ...
算法-合并集合
合并集合一共有n个数,编号是1~n,最开始每个数各自在一个集合中。
现在要进行m个操作,操作共有两种:
“M a b”,将编号为a和b的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略这个操作;
“Q a b”,询问编号为a和b的两个数是否在同一个集合中;
输入格式第一行输入整数n和m ...
2020.4.15
写一篇反思最近一个两个星期学习效率飞速下滑,看一会视频就控制不住自己摸向手机玩很长时间,差不多是学习十分钟刷手机半小时,回老家一个月把每次学习前开番茄TODO的习惯给丢掉了要捡起来重新培养,从一月份开始几乎是每天都在学习acwing算法基础班总是感觉似懂非懂,有很强的的挫败感坚持到现在有些 ...
算法-Trie树
Trie树维护一个字符串集合,支持两种操作:
“I x”向集合中插入一个字符串x;
“Q x”询问一个字符串在集合中出现了多少次。
共有N个操作,输入的字符串总长度不超过 105105,字符串仅包含小写英文字母。
输入格式第一行包含整数N,表示操作数。
接下来N行,每行包含一个操作指令,指令为” ...
算法-KMP字符串!!!!
KMP字符串给定一个模式串S,以及一个模板串P,所有字符串中只包含大小写英文字母以及阿拉伯数字。
模板串P在模式串S中多次作为子串出现。
求出模板串P在模式串S中所有出现的位置的起始下标。
输入格式第一行输入整数N,表示字符串P的长度。
第二行输入字符串P。
第三行输入整数M,表示字符串S的长度。
...
算法-单调队列!
给定一个大小为n≤106n≤106的数组。
有一个大小为k的滑动窗口,它从数组的最左边移动到最右边。
您只能在窗口中看到k个数字。
每次滑动窗口向右移动一个位置。
以下是一个例子:
该数组为[1 3 -1 -3 5 3 6 7],k为3。
窗口位置
最小值
最大值
[1 3 -1] -3 ...
算法-单调栈!
单调栈给定一个长度为N的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出-1。
输入格式第一行包含整数N,表示数列长度。
第二行包含N个整数,表示整数数列。
输出格式共一行,包含N个整数,其中第i个数表示第i个数的左边第一个比它小的数,如果不存在则输出-1。
数据范围1≤N≤1051≤N≤ ...
算法-模拟队列
模拟队列实现一个队列,队列初始为空,支持四种操作:
(1) “push x” – 向队尾插入一个数x;
(2) “pop” – 从队头弹出一个数;
(3) “empty” – 判断队列是否为空;
(4) “query” – 查询队头元素。
现在要对队列进行M个操作,其中的每个操作3和操作4都要输出相 ...
算法-模拟栈
模拟栈实现一个栈,栈初始为空,支持四种操作:
(1) “push x” – 向栈顶插入一个数x;
(2) “pop” – 从栈顶弹出一个数;
(3) “empty” – 判断栈是否为空;
(4) “query” – 查询栈顶元素。
现在要对栈进行M个操作,其中的每个操作3和操作4都要输出相应的结果。 ...