随笔分类 - 从0.5开始的算法学习记录
摘要:差分笔记 差分可看作前缀和的逆运算 对于一个数组 a[n] 有: a[0] a[1] a[2] a[3] ......a[n-2] a[n-1] 构造一个差分数组 b[n] 使得其中每一项都为数组 a 每项的差: b[0]=a[0] b[1]=a[1]-a[0] ...... b[n-2]=a[n-
阅读全文
摘要:前缀和笔记 对于一个一维数组 a[m] 其前 i 项的和记作 s[i] 如果想要对 a[m] 中任意连续段的值进行求和,例如 a[l]~a[r] 则可使用前缀和数组进行 \(O(n)\) 计算 int a[m],s[m]; s[0]=0;//定义s[0]的值,防止边界问题 for (int i=1;
阅读全文
摘要:高精度减法 vector<int>u, v; bool cmp(vector<int> &u, vector<int> &v) {//比较两个数大小 if (u.size() != v.size()) //前数不等于后数 return u.size() > v.size();//返回前数是否大于后数
阅读全文
摘要:vector<int> u; //储存a倒序的每个数 vector<int> v; //储存b倒序的每个数 vector<int> add(vector<int> m, vector<int> n) {//高精度加法 vector<int> temp;//temp数组存储相加后的每个数 int t=
阅读全文
摘要:void swap(int* a, int* b) { int temp = *a; *a = *b; *b = temp; } //swap交换两数 void quick_sort(int u[], int l, int r) { if (l >= r) return; int x = u[r],
阅读全文
摘要:int tmp[];//temp数组存储数据 void merge_sort(int a[],int l,int r) { if (l >= r) return;//递归到最后只有一个数返回 int mid = (l + r)/2 ;//确定分界点 l~mid mid+1~r; merge_sort
阅读全文