随笔分类 -  从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- 阅读全文
posted @ 2024-10-16 16:47 才瓯 阅读(12) 评论(0) 推荐(0) 编辑
摘要:前缀和笔记 对于一个一维数组 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; 阅读全文
posted @ 2024-10-12 15:44 才瓯 阅读(14) 评论(0) 推荐(0) 编辑
摘要:高精度减法 vector<int>u, v; bool cmp(vector<int> &u, vector<int> &v) {//比较两个数大小 if (u.size() != v.size()) //前数不等于后数 return u.size() > v.size();//返回前数是否大于后数 阅读全文
posted @ 2024-10-08 19:14 才瓯 阅读(3) 评论(0) 推荐(0) 编辑
摘要:vector<int> u; //储存a倒序的每个数 vector<int> v; //储存b倒序的每个数 vector<int> add(vector<int> m, vector<int> n) {//高精度加法 vector<int> temp;//temp数组存储相加后的每个数 int t= 阅读全文
posted @ 2024-10-06 13:39 才瓯 阅读(23) 评论(0) 推荐(0) 编辑
摘要: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], 阅读全文
posted @ 2024-10-06 10:32 才瓯 阅读(20) 评论(0) 推荐(0) 编辑
摘要: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 阅读全文
posted @ 2024-10-06 10:31 才瓯 阅读(21) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示