摘要: for (int i = 0, j = 0; i < n; i ++ ){ while (j < i && check(i, j)) j ++ ; // 具体问题的逻辑}常见问题分类: (1) 对于一个序列,用两个指针维护一段区间 (2) 对于两个序列,维护某种次序,比如归并排序中合并两个有序序列的 阅读全文
posted @ 2022-11-22 23:19 山海自有归期 阅读(13) 评论(0) 推荐(0) 编辑
摘要: vector<int> alls; // 存储所有待离散化的值sort(alls.begin(), alls.end()); // 将所有值排序alls.erase(unique(alls.begin(), alls.end()), alls.end()); // 去掉重复元素 // 二分求出x对应 阅读全文
posted @ 2022-11-22 23:19 山海自有归期 阅读(16) 评论(0) 推荐(0) 编辑
摘要: // 将所有存在交集的区间合并void merge(vector<PII> &segs){ vector<PII> res; sort(segs.begin(), segs.end()); int st = -2e9, ed = -2e9; for (auto seg : segs) if (ed 阅读全文
posted @ 2022-11-22 23:19 山海自有归期 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 给区间[l, r]中的每个数加上c:B[l] += c, B[r + 1] -= c 阅读全文
posted @ 2022-11-22 23:18 山海自有归期 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 给以(x1, y1)为左上角,(x2, y2)为右下角的子矩阵中的所有元素加上c:S[x1, y1] += c, S[x2 + 1, y1] -= c, S[x1, y2 + 1] -= c, S[x2 + 1, y2 + 1] += c 阅读全文
posted @ 2022-11-22 23:18 山海自有归期 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 求n的第k位数字: n >> k & 1返回n的最后一位1:lowbit(n) = n & -n 阅读全文
posted @ 2022-11-22 23:18 山海自有归期 阅读(17) 评论(0) 推荐(0) 编辑