![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
露西的查理
这个作者很懒,什么都没留下…
展开
-
KMP模板
KMP模板#include <iostream>using namespace std;const int M = 1e5 + 10, N = 1e6 + 10;int m, n;char p[M], s[N];int ne[M];//int main() { cin >> m >> p + 1 >> n >> s + 1; //处理next数组 for(int i=2,j=0;i<=m;i++原创 2021-07-01 11:30:33 · 180 阅读 · 0 评论 -
N皇后问题优化
N皇后变形题 https://www.acwing.com/problem/content/1434/传统做法会在n=13时TL,学习了一下位运算。传统回溯方法#include<iostream>#include<algorithm>#include<math.h>#include<string.h>using namespace std;int a[15];int num;int n;bool check(int x,int k){原创 2021-01-26 21:30:43 · 271 阅读 · 0 评论 -
ST表模板和树状数组模板
ST表模板ST表模板,时间复杂度0(nlogn)预处理,0(1)查询,0(nlogn)空间a[i][j]表示从i开始长度为2^j的范围int d[10000][25];int mt[10000];void initst(){ for(int i=0;i<n;i++) a[i][0] = a[i]; for(int j=1;j<n;j++) //先循环j后循环i for(int i=0;i+1<<(j-1)<n;i++) { d原创 2020-05-25 11:50:15 · 245 阅读 · 0 评论 -
正方形(矩阵dp)
221.最大正方形(leetcode)在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4思路:我们用动态规划来考虑这个问题,dp[i][j]表示以i,j为右下角,所有数据为1的的最长边长,我们只需要求出所有dp[i][j]来,取最大值的平方就是最大面积。如果该位置的值是 0,则 dp(i, j) = 0,因为当前位置不可能在由 1 组成的正方形中;如果该位置的原创 2020-05-08 18:32:09 · 2153 阅读 · 0 评论 -
鸡蛋掉落问题
leetcode 887.鸡蛋掉落#include<iostream>#include<vector>using namespace std;int superEggDropBS(int K, int N) { if (K == 1) return N; if (N == 1) return 1; vector<vector...原创 2020-04-11 22:11:00 · 309 阅读 · 0 评论 -
差分矩阵模板
差分矩阵S[i, j] = 第i行j列格子左上部分所有元素的和以(x1, y1)为左上角,(x2, y2)为右下角的子矩阵的和为:S[x2, y2] - S[x1 - 1, y2] - S[x2, y1 - 1] + S[x1 - 1, y1 - 1];#include<iostream>using namespace std;int a[1010][1010];in...原创 2020-04-10 20:37:28 · 256 阅读 · 0 评论 -
高精度数的相加相减(大数相加/减)
高精度数相加//A,B 为高精度的数列倒序 vector<int> add(vector<int>& A,vector<int>& B){ if(A.size()<B.size()) add(B,A); int t=0; vector<int> C; for(int i=0;i<A.size();i++) ...原创 2020-04-08 21:42:10 · 337 阅读 · 0 评论 -
快速排序算法模板和归并排序模板
快速排序算法模板(以中间为基准点)void quick_sort(int q[], int l, int r){ if (l >= r) return; int i = l - 1, j = r + 1, x = q[l + r >> 1]; while (i < j) { do i ++ ; while (q[i] &...原创 2020-04-06 19:26:11 · 315 阅读 · 0 评论 -
矩阵连乘问题
所谓矩阵连乘问题,就是用动态规划的方法来求出如何“分解”连乘式,例如A1A2A3可以分为两种计算方法,一种是(A1A2)A3,另一种是A1(A2A3),如果三个矩阵分别为10×100,100×5,5×50,则第一种所需要的乘法次数为7500,而第二种的乘法次数为75000。(m×n和n×p的的两个矩阵相乘所需要的乘法次数为m×n×p)。我们需要两个二维数组m(i,j)用来表示第i个矩阵到第j个矩...原创 2020-03-16 11:21:05 · 2258 阅读 · 0 评论 -
整数划分(递归)
整数划分(一)n=m1+m2+…+mi; (其中mi为正整数,并且1 <= mi <= n),则{m1,m2,…,mi}为n的一个划分。如果{m1,m2,…,mi}中的最大值不超过m,即max(m1,m2,…,mi)<=m,则称它属于n的一个m划分。这里我们记n的m划分的个数为q(n,m);根据m和n的关系可将问题划分为:1.n或m<0时, q(n,m)=0;2.n或m...原创 2020-02-24 19:32:48 · 409 阅读 · 0 评论