上一页 1 2 3 4 5 6 7 8 9 ··· 26 下一页
摘要: // hh 表示队头,tt表示队尾的后一个位置int q[N], hh = 0, tt = 0; // 向队尾插入一个数q[tt ++ ] = x;if (tt == N) tt = 0; // 从队头弹出一个数hh ++ ;if (hh == N) hh = 0; // 队头的值q[hh]; // 阅读全文
posted @ 2022-11-28 21:26 山海自有归期 阅读(0) 评论(0) 推荐(0) 编辑
摘要: // hh 表示队头,tt表示队尾int q[N], hh = 0, tt = -1; // 向队尾插入一个数q[ ++ tt] = x; // 从队头弹出一个数hh ++ ; // 队头的值q[hh]; // 判断队列是否为空if (hh <= tt){ } 阅读全文
posted @ 2022-11-28 21:26 山海自有归期 阅读(18) 评论(0) 推荐(0) 编辑
摘要: // tt表示栈顶int stk[N], tt = 0; // 向栈顶插入一个数stk[ ++ tt] = x; // 从栈顶弹出一个数tt -- ; // 栈顶的值stk[tt]; // 判断栈是否为空if (tt > 0){ } 阅读全文
posted @ 2022-11-28 21:26 山海自有归期 阅读(19) 评论(0) 推荐(0) 编辑
摘要: vector, 变长数组,倍增的思想 size() 返回元素个数 empty() 返回是否为空 clear() 清空 front()/back() push_back()/pop_back() begin()/end() [] 支持比较运算,按字典序 pair<int, int> first, 第一 阅读全文
posted @ 2022-11-28 21:25 山海自有归期 阅读(15) 评论(0) 推荐(0) 编辑
摘要: p[0] = 1;for (int i = 1; i <= n; i ++ ){ h[i] = h[i - 1] * P + str[i]; p[i] = p[i - 1] * P;} // 计算子串 str[l ~ r] 的哈希值ULL get(int l, int r){ return h[r] 阅读全文
posted @ 2022-11-28 21:25 山海自有归期 阅读(17) 评论(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) 编辑
摘要: 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) 编辑
摘要: 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) 编辑
摘要: 求n的第k位数字: n >> k & 1返回n的最后一位1:lowbit(n) = n & -n 阅读全文
posted @ 2022-11-22 23:18 山海自有归期 阅读(17) 评论(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) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 26 下一页