01 2022 档案

摘要:题目传送门 分析 解法 1: 每两个点都连边,跑裸的最短路。 显然,\(n\) 和 \(m\) 非常大,暴力连边会 TLE 和 MLE。 解法 2(正解): 首先,对答案产生贡献的只有换乘站,所以我们只用连两种边: 一个换乘站看作 \(2\) 个节点,连边,边权为 \(1\)(站内换乘)。 将 \( 阅读全文
posted @ 2022-01-26 00:21 tmjyh09 阅读(91) 评论(0) 推荐(0)
摘要:题目传送门 题意简述 给定一张无向图,每次删去一个节点,问每次操作后的连通块个数。 分析 \(m\le2\times10^5,n\le2\cdot m\),如果每次暴力删点再 bfs,必定超时。 还记得上次提到的 [USACO16OPEN]Closing the Farm 吗?这两题非常非常相似,我 阅读全文
posted @ 2022-01-24 23:58 tmjyh09 阅读(46) 评论(0) 推荐(0)
摘要:题目传送门 题意简述 给定一张有向图,起点任意,求出到每个点经过的最多点数和。 分析 先把图画出来: 一开始做这题的时候以为是非常简单的最短(长)路,但是发现起点是任意的,没有源点,所以我们就不能用 SPFA 啦反正都死了( 事实上,我们可以对这张图进行拓扑排序,将入度为 \(0\) 的节点 \(d 阅读全文
posted @ 2022-01-22 15:57 tmjyh09 阅读(31) 评论(0) 推荐(0)
摘要:题目传送门 分析 这题有好几种方法可以做,有跑最短路的,有些最小生成树的。这里介绍最短路的方法。 单源最短路径,很自然地想到 Dijkstra。不过题目要求的是最大值最小,所以松弛就要改成: if(dis[v]>max(dis[u],e[i].w)) dis[v]=max(dis[u],e[i].w 阅读全文
posted @ 2022-01-21 22:00 tmjyh09 阅读(48) 评论(0) 推荐(0)
摘要:前言 看了网上的不下 \(50^+\) 篇配置指北,感觉都很复杂,不够简洁。后来终于用了最简洁的方式配置好了 vscode,不到 \(2\) 分钟。 Part1. 安装 .NET Framework 一般来说 Windows 系统自带 .NET Framework,但如果你的电脑没有,就去下载一个, 阅读全文
posted @ 2022-01-21 20:16 tmjyh09 阅读(96) 评论(0) 推荐(0)
摘要:A. 出题 题目传送门 该题正解 dp,数据略水,暴力都过了。 完全背包问题,只不过要求刚好装满,所以 \(f\) 数组可以全部赋值为一个特殊的数,只有刚好装到这个容量时才能转移。 代码实现: #include <bits/stdc++.h> using namespace std; int f[4 阅读全文
posted @ 2022-01-21 18:52 tmjyh09 阅读(38) 评论(0) 推荐(0)
摘要:前言 Sublime Text 3 是一个非常漂亮的代码编辑器,但怎么能让她作为记事本呢?这里就教大家配置 C++ 的运行环境。 Part1. 配置环境变量 要想运行 C++ 程序,首先需要编译器,这里使用 MinGW。可以去官网下载,不过若你安装了 Dev C++ 或 Code::Blocks,无 阅读全文
posted @ 2022-01-18 22:40 tmjyh09 阅读(500) 评论(0) 推荐(0)
摘要:前言 最小生成树是最小权重生成树的简称。 通俗来讲就是,一个有 \(n\) 个点的无向连通图,选出其中 \(n-1\) 条边使图联通,每条边都有权值,要求权值和最小。 更详细的解释可参考 OI Wiki。 Kruskal 算法 Part1. 前置芝士 并查集 Part2. 思想 Kruskal 算法 阅读全文
posted @ 2022-01-18 00:24 tmjyh09 阅读(50) 评论(0) 推荐(0)
摘要:本题有两道一模一样的题目,改个数据范围即可 AC。 题目1 | 题目2 题意简述 给定一张无向图,每次删去一个点,问每次操作后图是否联通。 分析 判断图是否联通可以想到使用并查集来维护。但是并查集很难实现删除操作,那如何处理呢? 并查集的核心是“并”和“查”,既然题目要求每次删去一个点,那不如反过来 阅读全文
posted @ 2022-01-17 17:23 tmjyh09 阅读(38) 评论(0) 推荐(0)
摘要:题目传送门 分析 这道题可以用 dp 来做。设 \(f_{i,j}\) 为第 \(j\) 次传球传到第 \(i\) 个人的方案数。一个球可以从左边传过来(\(i-1\)),也可以从右边传过来(\(i+1\))。那么 \(f_{i,j}=\begin{cases}1,&i=1\&j=0,\\f_{n, 阅读全文
posted @ 2022-01-04 00:19 tmjyh09 阅读(296) 评论(0) 推荐(0)
摘要:题目传送门 题意简述 一张地图,只能往上往右走,其中有 \(n\) 个障碍不能走上去,问从 \((1,1)\) 走到 \((a,b)\) 有几种方案。 分析 首先,我们将棋盘倒置方便处理,也就是说只能往下往右走。 动态规划。设 \(f_{i,j}\) 表示从 \((1,1)\) 走到 \(f_{i, 阅读全文
posted @ 2022-01-02 18:04 tmjyh09 阅读(115) 评论(0) 推荐(1)
摘要:题目传送门 分析 \(n\le20\),放心 dfs。难点主要在保存路径上。 一个点的地雷只能挖一次,所以需要维护 \(vis\) 数组。 注意,任何点都可以作为起点。 代码 #include <bits/stdc++.h> using namespace std; int n; int a[25] 阅读全文
posted @ 2022-01-02 16:32 tmjyh09 阅读(98) 评论(0) 推荐(0)