Marlin's Blog

「编译当下,重构未来」

贪心经典专题 1

贪心 狭义的贪心 每一步都做出在当前状态下最好或最优的选择,从而希望最终的结果是最好或最优的算法 广义的贪心 通过分析题目自身的特点和性质,只要发现让求解答案的过程待得到加速的结论,都算广义的贪心 贪心是最符合自然智慧的思想,一般分析门槛不高 理解基本的排序、有序结构,有基本的逻辑思维就能理解 但是贪心的题目,千题千面,极难把握 难度在于证明局部最优可以得到全局最优。不过可以使用对数...

宽度优先遍历及其扩展

BFS

宽度优先遍历及其扩展 宽度优先遍历基本内容 bfs 的特点是逐层扩散,从源头点到目标点扩散了几层,最短格就是多少 bfs 可以使用的特征是任意两个节点之间的相互距离相同(无向图) bfs 开始时,可以是单个源头、也可以是多个源头 bfs 频繁使用队列,形式可以是单点弹出或者整层弹出 bfs 进行时,进入队列的节点需要标记状态,防止同一个节点重复进出队列 bfs 进行时,可能会包含剪枝策略...

为什么你总是连不上自习室的 Wi-Fi?

——一次真实踩坑实录与自救指南

写在前面的一些名词 DHCP(Dynamic Host Configuration Protocol):动态主机配置协议,是一种局域网协议,用于动态分配 IP 地址。 DHCP 租约:动态主机配置协议租约,是指 IP 地址租用期限,通常为 30 分钟到 24 小时,过期后 IP 地址自动释放。 SSID(Service Set Identifiers):无线局域网的名称,通常...

最小生成树

MST(Minimum Spanning Tree)

最小生成树 概念 生成树:n 个点、n-1 条边,连通且无环。 最小生成树 MST:边权总和最小的生成树。 最小瓶颈树: 所有生成树中最大边权最小的树。最小瓶颈树一定是 MST。 Kruskal(边排序 + 并查集) 复杂度 排序:$O(m log m)$ 并查集:$O(m α(n)) + O(n)$ 总:$O(m log m) + O(n)$。 ...

拓扑排序拓展

拓扑排序的扩展技巧 重要技巧:利用拓扑排序的过程,上游节点逐渐推送消息;给下游节点的技巧 注意: 这个技巧已经是树型 dp 的内容了,不过即便不会动态规划,本节题也能做。 题目 1 最大食物链计数 上游节点向下游节点推送消息,下游节点收到消息后计数,最后统计下游节点的计数之和。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21...

并查集-下

并查集-下 并查集的小扩展 可以定制信息:并查集目前有多少个集合,以及给每个集合打上标签信息 题目 1 移除最多的同行或同列石头 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 struct DSU {...

并查集-上

并查集-上 1. 并查集是什么 并查集(Disjoint Set Union,简称 DSU)是一种树型数据结构,专门用来高效地维护「元素分组」与「合并集合」两类操作: find(u):查询元素 u 所在集合的代表元(根)。 merge(u, v):把 u 与 v 所在集合合并成一个。 并查集的核心思想只有一句话: 用一棵树表示一个集合,树根就是集合的代表元,所有节...

N皇后问题-位运算

N 皇后问题-位运算 N 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 国际象棋中皇后可以攻击同行、同列以及同对角线的棋子。因此,N 皇后问题要求找到一种布局,使得任意两个皇后都不能处于同一行、同一列或同一对角线上。 冲突条件详解 在解决 N 皇后问题时,我们需要判断当前位置是否与已经放置的皇后发生冲突。冲突主要分为三种情况: ...

Git使用与代理

为什么我的Git总是用不了?

本文借助 Roo Code Agent 自动排查并修正了我的 Git 配置,最终由它汇总整理成文。 Git 使用与代理 在使用 Git 时,特别是在某些网络环境下,我们可能需要配置代理才能正常访问远程仓库(如 GitHub)。本文将介绍如何正确配置 Git 代理以解决连接问题。 通常这种情况可以通过使用 GitHub Desktop 软件来解决,但是,如果使用命令行,则需要手动配...

常见经典递归总结

排列、组合、子集枚举

常见经典递归总结 子集枚举 题目 1 返回字符串的全部字序列 时间复杂度:$O(n*2^n)$(子集枚举+遍历) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 bool st[20]; set<string> set_str; void dfs(int x, stri...