# 常用代码模板 1—— 基础算法
# 快速排序算法模板
1 | void quick_sort(int q[], int l, int r) |
# 归并排序算法模板
1 | void merge_sort(int q[], int l, int r) |
# 整数二分算法模板
1 | bool check(int x) {/* ... */} // 检查x是否满足某种性质 |
# 浮点数二分算法模板
1 | bool check(double x) {/* ... */} // 检查x是否满足某种性质 |
# 高精度加法
1 | // C = A + B, A >= 0, B >= 0 |
# 高精度减法
1 | // C = A - B, 满足A >= B, A >= 0, B >= 0 |
# 高精度乘低精度
1 | // C = A * b, A >= 0, b >= 0 |
# 高精度除以低精度
1 | // A / b = C ... r, A >= 0, b > 0 |
# 一维前缀和
1 | S[i] = a[1] + a[2] + ... a[i] |
# 二维前缀和
1 | S[i, j] = 第i行j列格子左上部分所有元素的和 |
# 一维差分
1 | 给区间[l, r]中的每个数加上c:B[l] += c, B[r + 1] -= c |
# 二维差分
1 | 给以(x1, y1)为左上角,(x2, y2)为右下角的子矩阵中的所有元素加上c: |
# 位运算
1 | 求n的第k位数字: n >> k & 1 |
# 双指针
1 | for (int i = 0, j = 0; i < n; i ++ ) |
# 离散化
1 | vector<int> alls; // 存储所有待离散化的值 |
# 区间合并
1 | // 将所有存在交集的区间合并 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 monster's blog!
评论