摘要: 二分图 bool dfs(int u, int c) { if (color[u] == c) return true; else if (color[u] == 3 - c) return false; color[u] = c; for (int v : graph[u]) if (!dfs(v 阅读全文
posted @ 2024-05-04 11:20 RonChen 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 最小生成树是有边权的无向图中的一个常见问题。 在无向图 G(V,E) 中,把连通而且不含有环路的一个子图称为一棵生成树,它包含全部 n 个点和 n-1 条边。边权之和最小的树称为最小生成树(Minimal Spanning Tree, MST)。 MST 的计算用到了一个基本性质:一个图的 MST 阅读全文
posted @ 2024-04-05 20:53 RonChen 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 现实生活中我们经常要做一连串事情,这些事情之间有顺序关系或依赖关系,做一件事情之前必须先做另一件事,如安排客人的座位、穿衣服的先后、课程学习的先后等。这些事情可以抽象为图论中的拓扑排序(Topological Sorting)问题。 例题:P4017 最大食物链计数 给出一个食物网,要求出这个食物网 阅读全文
posted @ 2024-04-05 14:58 RonChen 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 并查集是一种可以动态维护若干个不重叠的集合,并支持合并与查询的数据结构。 例:P1551 亲戚 题目描述: 如果 \(x\) 和 \(y\) 是亲戚,\(y\) 和 \(z\) 是亲戚,那么 \(x\) 和 \(z\) 也是亲戚。如果 \(x\) 和 \(y\) 是亲戚,那么 \(x\) 的亲戚都是 阅读全文
posted @ 2024-03-16 11:20 RonChen 阅读(5) 评论(0) 推荐(0) 编辑
摘要: A. Brick Wall 因为水平砖块的长度至少为 \(2\),所以一行中水平砖块最多放 \(\lfloor \frac{m}{2} \rfloor\) 块,因此答案不超过 \(n \cdot \lfloor \frac{m}{2} \rfloor\)。如果 \(m\) 是奇数,用长度为 \(\l 阅读全文
posted @ 2024-02-17 21:15 RonChen 阅读(16) 评论(0) 推荐(0) 编辑
摘要: A. Doremy's Paint 3 对于式子 \(b_1 + b_2 = b_2 + b_3 = \dots = b_{n-1}+b_n=k\),从中挑出 \(b_i + b_{i+1} = b_{i+1} + b_{i+2}\),得到 \(b_i = b_{i+2}\),这就意味着所有奇数位置 阅读全文
posted @ 2024-02-16 08:37 RonChen 阅读(32) 评论(0) 推荐(1) 编辑
摘要: 单调队列在 DP 中的基本应用,是对这样一类 DP 状态转移方程进行优化:\(dp[i] = \min \{ dp[j] + a[i] + b[j] \}, L(i) \le j \le R(i)\)。方程中的 \(\min\) 也可以是 \(\max\),方程的特点是其中关于 \(i\) 的项 \ 阅读全文
posted @ 2024-02-06 17:05 RonChen 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 双端队列 双端队列是一种具有队列和栈性质的数据结构,它能在两端进行插入和删除,而且也只能在两端插入和删除。 STL 中的双端队列可以用 deque,它的用法如下: dq[i] 返回队列中下标为 i 的元素 dq.front() 返回队头 dq.back() 返回队尾 dq.pop_back() 删除 阅读全文
posted @ 2024-02-06 09:37 RonChen 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 堆是一种树形结构,树的根是堆顶,堆顶始终保持为所有元素的最优值。有大根堆和小根堆,大根堆的根节点是最大值,小根堆的根节点是最小值。堆一般用二叉树实现,称为二叉堆。 堆的存储方式 堆的操作 empty 返回堆是否为空 top 直接返回根节点的值,时间复杂度 \(O(1)\) push 将新元素添加在数 阅读全文
posted @ 2024-02-03 19:58 RonChen 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 最短路是图论中最经典的模型之一,在生活中也有很多应用。例如,城市之间有许多高速公路相连接,想从一个地方去另一个地方,有很多种路径,如何选择一条最短路的路径就是最基本的最短路问题。有时候问题会更加复杂,加上别的限制条件,例如某些城市拥有服务区,连续开车达到一定的时间就必须要进服务区休息,或者是某些路段 阅读全文
posted @ 2023-12-23 07:14 RonChen 阅读(19) 评论(0) 推荐(0) 编辑