10 2020 档案
-
基础算法--双指针
摘要:面对需要两重循环的问题,如果可以发现其中的某些单调性,使得一个指针移动的过程中,另一个指针只能单调的朝某个方向移动,这就可以称作双指针算法 1 //最长不连续子序列问题 2 #include<iostream> 3 using namespace std; 4 const int N=100010; 阅读全文
-
基础算法--差分,二维差分
摘要:差分面向的问题是对于一段数组同时加上某个值的问题 差分是前缀和的逆操作 差分没有必要关注差分的构造,因为你写好了插入函数的话,对[i,i]区间插入a[i]就好了 1 #include<iostream> 2 using namespace std; 3 int n,m; 4 const int N= 阅读全文
-
基础算法--前缀和,二维前缀和
摘要:一定从1开始 1 #include<iostream> 2 using namespace std; 3 int n,m; 4 const int N=1e5+10; 5 int a[N],s[N]; 6 int main(void){ 7 cin>>n>>m; 8 for(int i=1;i<=n 阅读全文
-
基础算法--有序离散化
摘要:AcWing模板题:https://www.acwing.com/problem/content/804/ 1 #include<iostream> 2 #include<vector> 3 #include<algorithm> 4 using namespace std; 5 int n,m; 阅读全文
-
数据结构--单调栈,单调队列
摘要:1 #include<iostream> 2 using namespace std; 3 const int N=1e5+10; 4 int q[N],tt; 5 int main(void){ 6 int m; 7 cin>>m; 8 for(int i=0;i<m;i++){ 9 int x; 阅读全文
-
基础算法--KMP匹配字符串
摘要:1 #include<iostream> 2 using namespace std; 3 int n,m; 4 const int N=1e5+10; 5 const int M=1e6+10; 6 char p[N],s[M];//p是模板串,s是源串 7 int ne[N];//ne表示前缀和 阅读全文
-
基础算法--整数二分
摘要:来自AcWing->活动->算法基础课 二分模板1 1 int binary_search1(int l,int r){ 2 while(l<r){ 3 int mid=l+r+1>>1; 4 if(check(mid)){ 5 l=mid; 6 }else{ 7 r=mid-1; 8 } 9 } 阅读全文
-
基础算法--快排,归并排序
摘要:1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 const int N=1e6+10; 5 int n; 6 int q[N]; 7 void quick_sort(int q[],int l,int r){ 8 if 阅读全文