基础算法
文章平均质量分 63
主要记录学习基础算法
chen<>
一名科班小白
展开
-
trie树
trie树原创 2022-10-01 11:50:41 · 198 阅读 · 0 评论 -
DP之字符串算法
DP有关于序列和字符串的常见问题及做法原创 2022-09-28 21:11:57 · 335 阅读 · 0 评论 -
大数运算(加减乘除)
高精度数的加减乘除运算算法原创 2022-09-21 19:55:04 · 1040 阅读 · 2 评论 -
动态规划之区间DP详解
区间DP原创 2022-09-08 19:54:51 · 1054 阅读 · 0 评论 -
动态规划之线性DP详解
动态规划之线性DP原创 2022-09-08 09:54:47 · 1602 阅读 · 0 评论 -
动态规划背包问题之分组背包详解
分组背包原创 2022-09-04 22:47:39 · 325 阅读 · 0 评论 -
树状数组的基本用法
树状数组的基本使用原创 2022-07-26 19:42:06 · 138 阅读 · 2 评论 -
由互质的两个数不能凑出的最大数算法
由互质的两个数不能凑出的最大数算法原创 2022-07-23 22:21:12 · 399 阅读 · 0 评论 -
二分查找算法讲解
二分查找的常见模板及讲解原创 2022-07-22 16:18:39 · 385 阅读 · 0 评论 -
动态规划背包问题之多重背包详解
动态规划背包问题之多重背包详解原创 2022-07-19 23:28:55 · 882 阅读 · 3 评论 -
动态规划背包问题之完全背包详解
动态规划背包问题之完全背包详解原创 2022-07-18 20:44:23 · 7536 阅读 · 10 评论 -
动态规划背包问题之01背包详解
动态规划背包问题之01背包详解原创 2022-07-16 11:35:22 · 39702 阅读 · 14 评论 -
链表(静态链表) 栈与队列 、单调队列、单调栈
一、链表(用数组模拟链表,即静态链表、算法题一般用这种)1、单链表题目:2、代码#include<iostream>using namespace std;const int N=100010;//head表示头结点的下标//e[i]表示节点i的值//ne[i]表示节点i的next指针是多少//空节点的下标为-1//idx存储当前已经用到哪个点int head,e[N],ne[N],idx;void init(){ head=-1; idx=0;}原创 2021-08-17 19:11:29 · 143 阅读 · 0 评论 -
双指针算法、位运算、离散化、区间合并
一、双指针算法1、题目:2、代码#include<iostream>using namespace std;const int N=100010;int n;int s[N],a[N];//s数组用来判断区间内是否有连续数字 int main (){ cin>>n; for(int i=0;i<n;i++) cin>>a[i]; int res=0; for(int i=0,j=0;i<n;i++) { s[a[i]]++原创 2021-08-05 23:28:04 · 129 阅读 · 0 评论 -
前缀和差分
一、前缀和1、一维前缀和题目:有一个数列a1,a2,a3,a4~an那么其前缀和S[n]满足Si=a1+a2+~ai2、代码#include<iostream>using namespace std;const int n=100010;int n,m;int a[n],s[n]; //s[0]设置为0,是为了边界情况 也能用模板, //比如求a[1]到a[1]的和,这时只需要s[10 -s[0]int main (){ scanf("%d%d",&原创 2021-08-04 19:14:27 · 89 阅读 · 0 评论 -
归并排序模板
#1、题目:##2、归并排序思路分治思想,将一组连续的数一分为二,分别排序,最后由双指针将排好序的两组数合并组成一个数组。###3、源码#include<iostream>using namespace std;const int N=1e+6;int n;int q[N],tmp[N];void merge_sort(int q[],int l,int r){ if(r<=l) return; int mid = l + r >原创 2021-06-05 17:12:02 · 65 阅读 · 0 评论 -
快速排序模板
#1、题目:##2、思路:任取一个x值将数组一分为二,用双指针从两端向x靠近,将数组变成x左边的都小于等于x,x右边的都大于等于x,最后递归处理###3、源码#include<iostream>using namespace std;const int N=1E+6;int q[N];int n;void sort(int q[],int l,int r){ if (l >= r) return; int x=q[l+r>>1],i=l-1,原创 2021-06-05 17:22:35 · 64 阅读 · 0 评论