随笔分类 -  算法

记录本人算法的学习过程捏
摘要:DFS : acwing 842 递归搜索树 题库 - AcWing 1 #include<iostream> 2 using namespace std; 3 4 const int N = 10; 5 int n; 6 int path[N]; 7 bool st[N]; 8 9 void df 阅读全文
posted @ 2023-11-14 17:14 rw156 阅读(7) 评论(0) 推荐(0) 编辑
摘要:kmp 算法基本思路 1.初始化 j = -1,表示 pattern 当前已被匹配的最后位。2.让 i 遍历文本串 text,对每个 i,执行 3、4来试图匹配 text[i] 和 pattern[j + 1]。3.直到 j 回退到 -1 或者是 text[i] == pattern[j + 1], 阅读全文
posted @ 2023-11-14 00:09 rw156 阅读(11) 评论(0) 推荐(0) 编辑
摘要:acwing 154滑动窗口,单调队列q 存的是下标,真正的值需要再套一个a数组 1 #include<iostream> 2 using namespace std; 3 4 const int N = 1e6 + 10; 5 6 int n,k; 7 int a[N],q[N]; //q代表单调 阅读全文
posted @ 2023-11-13 17:08 rw156 阅读(3) 评论(0) 推荐(0) 编辑
摘要:1.哈希表的使用 <1> 拉链法 1 #include <cstring> 2 #include <iostream> 3 4 using namespace std; 5 6 const int N = 1e5 + 3; // 取大于1e5的第一个质数,取质数冲突的概率最小 可以百度 7 8 // 阅读全文
posted @ 2023-11-10 00:43 rw156 阅读(7) 评论(0) 推荐(0) 编辑
摘要:一维前缀和 1 #include<iostream> 2 using namespace std; 3 4 const int N = 100010; 5 int n,m; 6 int a[N],s[N]; //初始化s[0] = 0 7 8 int main() 9 { 10 scanf("%d% 阅读全文
posted @ 2023-11-02 10:33 rw156 阅读(11) 评论(0) 推荐(0) 编辑
摘要:两个高精度相加 1 #include <vector> 2 #include<iostream> 3 using namespace std; 4 5 const int N = 1e6 + 10; 6 7 // C = A + B, A >= 0, B >= 0 8 vector<int> add 阅读全文
posted @ 2023-10-31 23:30 rw156 阅读(13) 评论(0) 推荐(0) 编辑
摘要:归并排序最重要的一部便是归并,我们的模板顺序为: 定义一个中间值,将我们的区间范围一分为二,我们将 这两部分看成两个数组,我们分别将这两个数组进行归并 排序,并且定义一个新的数组,将这两个数组排序好后导入 到这个新数组中,并最后将这个定义的数组输出为原数组,即可 实现归并排序。 1 #include 阅读全文
posted @ 2023-10-31 18:48 rw156 阅读(6) 评论(0) 推荐(0) 编辑
摘要:二分一定有解,若出现无解,一定是题目中无解二分步骤:定义check函数,先找到一个x,使得区间左边满足条件区间右边不满足条件, 定义mid = l + r >> 1去判断于x的关系,此时需要判断边界关系,例如当a[mid]小于x时,说明二分值在x的左边,此时缩小范围为【mid,r】, 即令 l = 阅读全文
posted @ 2023-10-31 18:40 rw156 阅读(14) 评论(0) 推荐(0) 编辑
摘要:1.使用scanf函数提高运行效率 2.使用双指针双向读入,运行效率更高 3.定义一个量x,使得数组左右两边分别小于等于和大于等于x,进行快速排序; 4.用do,while循环最后一轮是已经不满足循环条件,此时a[i] >= x, a[j] <= x, 所以循环停止,此时只能使得中间的数 a[i] 阅读全文
posted @ 2023-10-31 00:25 rw156 阅读(68) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示