摘要: 离散化(Discretization)是算法竞赛中一个非常重要的技巧。它的核心思想是:当你在意的是数据之间的“相对大小(排名)”而不是“绝对数值”时,把大范围、稀疏的数据映射到小范围、紧凑的区间内。 以下从三个维度为你细讲: 1. 为什么要离散化?(痛点所在) 假设有一个问题:给你 \(n=10^5 阅读全文
posted @ 2026-01-28 10:59 EcSilvia 阅读(7) 评论(0) 推荐(0)
摘要: 你提供的这段代码是欧拉筛(Euler Sieve / Linear Sieve)最标准、最精炼的写法,常用于算法竞赛。 这段代码之所以被称为“线性筛”,是因为它保证了范围内的每一个合数都被其“最小质因子”筛掉,且仅被筛掉一次。 下面我为你逐行深度解析这段代码的逻辑: 1. 初始化 memset(st 阅读全文
posted @ 2026-01-27 15:29 EcSilvia 阅读(6) 评论(0) 推荐(0)
摘要: 这段代码是 SPFA 算法(Shortest Path Faster Algorithm),而且是一个专门用于判断负环的 SPFA 版本。 我们可以通过以下三个“铁证”断定它不是 Dijkstra: vis 数组的逻辑: 在 Dijkstra 中,vis 意味着“最短路已确定,不再更改”;而这里的 阅读全文
posted @ 2026-01-26 13:57 EcSilvia 阅读(2) 评论(0) 推荐(0)
摘要: 最短路 一个联通图中有n个点,m条边。边有权值(可正可负),可有向可无向。给定起点s和终点t,在所以连接s到t的路径中寻找边的权值之和最小的路径,这就是最短路径问题。 单源最短路 给定图,求一个点到所有其它点的最短路径。 Dijkstra算法: 该算法要求边权不为负,核心策略是每次选择当前距离起点最 阅读全文
posted @ 2026-01-26 12:39 EcSilvia 阅读(3) 评论(0) 推荐(0)
摘要: Prim #include<iostream> #include<cstdio> #include<vector> #include<algorithm> #include<cstring> #include<queue> #define m_p make_pair using namespace 阅读全文
posted @ 2026-01-25 11:15 EcSilvia 阅读(5) 评论(0) 推荐(0)
摘要: 01BFS 是一种特殊的广度优先搜索(BFS)算法,主要用于解决图中边权仅为 0 或 1 的单源最短路径问题。 它是 Dijkstra 算法在特定条件下的高效变种,时间复杂度可以达到 \(O(V + E)\)(\(V\) 是顶点数,\(E\) 是边数),比通用的 Dijkstra 算法(\(O(E 阅读全文
posted @ 2026-01-24 16:55 EcSilvia 阅读(13) 评论(0) 推荐(0)
摘要: 树的重心 #include<iostream> #include<cstdio> #include<vector> #include<algorithm> #include<cstring> #include<queue> #define m_p make_pair using namespace 阅读全文
posted @ 2026-01-24 14:53 EcSilvia 阅读(4) 评论(0) 推荐(0)
摘要: “滚动数组”是动态规划中一种非常重要的空间优化技巧。它的核心思想是:既然计算当前这一行状态时只用到上一行的结果,那我们就没必要把之前所有行的结果都存下来。 通过滚动数组,我们可以把空间复杂度从 \(O(N \times M)\) 降低到 \(O(M)\)。 1. 为什么要“滚动”?(以 0/1 背包 阅读全文
posted @ 2026-01-23 10:24 EcSilvia 阅读(15) 评论(0) 推荐(0)
摘要: 二分小技巧 这段代码是二分答案中查找最大可行值(即“最大的最小值”)的经典模版。 很多初学者会被 (l + r + 1) >> 1 里的这个 +1 搞晕。我为你深度剖析一下为什么要这么写,以及如何避坑。 1. 核心矛盾:死循环 在二分搜索中,当搜索区间只剩下两个相邻的数(比如 l = 2, r = 阅读全文
posted @ 2026-01-22 14:44 EcSilvia 阅读(2) 评论(0) 推荐(0)
摘要: 1-1 小朱爱 签到题,按题意数一下即可,注意 \ 的输出要用 \\ #include<bits/stdc++.h> using namespace std; void solve(){ string str; getline(cin,str); int cnt=0; for(int i=0;i<s 阅读全文
posted @ 2025-12-26 22:24 EcSilvia 阅读(5) 评论(0) 推荐(0)