单源最短路径 CPP P4779 & P3371 题目理解 我们需要计算从指定的起点s到每个节点的最短路径。图是一个带有非负权值的有向图。图的节点数最多为10^5,边数最多为2 \times 10^5,权重可以非常大,所以需要用效率较高的算法来求解最短路径。 算法选择 考虑到图的规模和边的权重都可能较大(最多有2 \ti
P4186 [USACO18JAN] Cow at Large G题解 CPP P4186 [USACO18JAN] Cow at Large G题解 问题概述: 在这个问题中,Bessie(牛)会出现在一个特定的谷仓 K,而农民会从一些出口谷仓(每个出口谷仓只有一条隧道)开始追捕 Bessie。目标是计算出为了确保农民能够抓住 Bessie,所需的最小农民数量。农民和 Bes
U498412 JJ的项链 CPP U498412 JJ的项链 题目描述 JJ 有一串由各种漂亮的贝壳组成的项链。JJ 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义。JJ 不断地收集新的贝壳,因此,他的项链变得越来越长(长成树形结构,以 1 为根)。 有一天,他突然提出了一个问题:树上某一条
T538693 飞羽疾电 CPP 飞羽疾电 (kujou) 题目描述 天狗以迅捷见长,九条裟罗熟稔稻妻地理,经常快速往来各地执行公务。九条裟罗在稻妻执行探索派遣任 务时,需要事先规划路线。 具体地,稻妻的地图可以描述为一个大小为 n 行 m 列的网格地图。每个格子上可能有障碍物,有障碍物 的格子无法通行。为了方便,九条裟罗用 0 表
【NOI大纲】数据结构 提高组 线性结构 双端栈 双端栈(Deque Stack 或 Double-ended Stack)是一种允许在两端进行操作的栈数据结构。通常的栈只能在一端进行操作(称为栈顶),即后进先出(LIFO, Last In First Out),但双端栈允许在栈的两端都可以执行进栈和出栈操作。 注意,双端栈和双端
【NOI大纲】C++程序设计 提高组 类 类的概念及简单应用 官方文档解释 比较复杂,有些东西用不到,想要深入了解时可以自行学习 通俗的说: C++类就像是“模具”,用来创建“物体”。比如,如果你要建造很多房子,先做一个房子的模具,里面规定了房子有几扇门、几扇窗户。这个模具就是“类”。每次用模具做出来的具体房子就是“对象”。 类里面可以
【NOI大纲】基础知识与编程环境 提高组 Linux系统终端中常用的文件与目录操作命令 cd 进入文件夹 ls 列出当前目录有什么文件,可以添加参数 pwd 当前在哪个目录 mkdir 创建文件夹 -p 递归创建 cp 复制文件 mv 移动文件 rm 删除文件 -r 递归删除 -f 强行删除 chmod 更改文件权限 chown 更改文件所
train_20241112 CPP 传送门(portal)[弱化版] 题目描述 你在一条长为 n 的链上,但是你只能通过一些传送门来到达其他位置,使用一个传送门需要时间,你的任务是计算出对于每一个单独的位置,到达那里需要的最短时间,或者无法到达。 一个传送门由两侧组成,一侧从 u 到 v ,另一侧从 x 到 y 。传送门是双向的,这意
快速幂原理 CPP 快速幂算法旨在高效计算 a^b \mod m。其核心思想是利用指数的二进制表示,将乘法次数减少到 O(\log b) 级别。详细解释如下: 快速幂的思想 给定计算 a^b \mod m,如果 b 表示为二进制数(如 b = 13_{10} = 1101_2),那么我们可以将其表示为: a^{13}
模意义下的除法(逆元) CPP 模逆元简介 给定一个数 a 和一个模 m,a 在模 m 意义下的逆元 a^{-1} 满足: a \cdot a^{-1} \equiv 1 \pmod{m} 如果我们想计算 \frac{a}{b} 在模 m 意义下的结果,可以将其表示为: \frac{a}{b}