摘要: 一、算法的简单思路 同一维差分 引用张图片进行说明 二、算法模板 给以(x1, y1)为左上角,(x2, y2)为右下角的子矩阵中的所有元素加上c: S[x1, y1] += c, S[x2 + 1, y1] -= c, S[x1, y2 + 1] -= c, S[x2 + 1, y2 + 1] + 阅读全文
posted @ 2020-08-31 19:22 努力学算法 阅读(379) 评论(0) 推荐(0)
摘要: 差分在一个区间内的数整体加上c 举个例子 输入6个数,进行3次操作 6 3 1 2 2 1 2 1 1 3 1 3 5 1 1 6 1 例子的解析 ##思路 想要让[l, r]上面整体加上c,在一个长的数组上是无法实现单方面让[l, r]上加 只有先让 l 右边的所有数先加上c, 在让 r + 1右 阅读全文
posted @ 2020-08-31 16:10 努力学算法 阅读(215) 评论(0) 推荐(0)
摘要: ###前缀和十分好理解,与数学上面的等差数列类同 先上前缀和模板 #以下是一维前缀和 公式如下 S[i] = a[1] + a[2] + ... a[i] a[l] + ... + a[r] = S[r] - S[l - 1] #二维前缀和模板 S[i, j] = 第i行j列格子左上部分所有元素的和 阅读全文
posted @ 2020-07-03 16:53 努力学算法 阅读(122) 评论(0) 推荐(0)
摘要: #先上二分模板 整数二分 bool check(int x) {/* ... */} // 检查x是否满足某种性质 // 区间[l, r]被划分成[l, mid]和[mid + 1, r]时使用: int bsearch_1(int l, int r) { while (l < r) { int m 阅读全文
posted @ 2020-07-02 18:33 努力学算法 阅读(230) 评论(0) 推荐(0)