摘要:归并排序 思想: 归并的本质也是分治,不过不同于快速排序,它在将大问题分成小问题之后最后需要将小问题合并成最终的排序结果。 #include<iostream> using namespace std; const int N = 1e6+10; int n; int q[N],tmp[N]; vo
阅读全文
摘要:快速排序 思想: 不同于归并,快速排序的本质是分治,且一直分,分到最小。即通过递归选中间值x将待排序的内容分为左右两个待排序区域。一直递归排序,将左边的都变成小于等于x的,右边的值都大于等于x。一直分分分到最小————即左右只有一个值。 代码如下 #include<iostream> using n
阅读全文
摘要:动态规划 动态规划基本概念 17矩阵连乘问题 18n阶级楼梯上楼问题 19-20最长公共子序列 #include<iostream> using namespace std; const int N = 1010; int n,m; char a[N],b[N]; int f[N][N]; int
阅读全文
摘要:分治法的应用 前提条件如图: 13.二分搜索 #include<iostream> using namespace std; const int N = 1e6; int n,m; int q[N]; //对于二分分界来说左加右减 //对于取中值来说,男左女右,男是1,不用+,女需要+1 int m
阅读全文
摘要:时间复杂度的证明 1.大O原理 如图所示,大O原理,只取最高的复杂度 2.加法原理 想要证明这个 首先,根据大O定义: F(N) <= C1f(N) G(N) <= C2g(N) 再把两者合并起来: F(N)+G(N) <= C1f(N)+C2g(N) 设C3 = max(C1,C2) 则F(N)+
阅读全文
摘要:总的学习分为7个部分: 主要有三个组成: 布局 样式 功能
阅读全文
摘要:高精度加减法: 高精度加法 #include <iostream> #include <vector> using namespace std; vector<int> add(vector<int> &A, vector<int> &B) { if (A.size() < B.size()) re
阅读全文