自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(89)
  • 收藏
  • 关注

原创 [C++][算法基础]贪心应用问题合集

在一个果园里,达达已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。达达决定把所有的果子合成一堆。每一次合并,达达可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过 𝑛−1 次合并之后,就只剩下一堆了。达达在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为还要花大力气把这些果子搬回家,所以达达在合并果子时要尽可能地节省体力。

2024-04-29 20:26:03 1236

原创 [C++][算法基础]区间覆盖(贪心 + 区间问题4)

给定 𝑁 个闭区间 [𝑎𝑖,𝑏𝑖] 以及一个线段区间 [𝑠,𝑡],请你选择尽量少的区间,将指定线段区间完全覆盖。输出最少区间数,如果无法完全覆盖则输出 −1。

2024-04-28 21:47:39 280

原创 [C++][算法基础]区间分组(贪心 + 区间问题3)

给定 𝑁 个闭区间 [𝑎𝑖,𝑏𝑖],请你将这些区间分成若干组,使得每组内部的区间两两之间(包括端点)没有交集,并使得组数尽可能小。输出最小组数。

2024-04-28 21:45:04 184

原创 [C++][算法基础]最大不相交区间数量(贪心 + 区间问题2)

给定 𝑁 个闭区间 [𝑎𝑖,𝑏𝑖],请你在数轴上选择若干区间,使得选中的区间之间互不相交(包括端点)。输出可选取区间的最大数量。

2024-04-28 21:43:36 222

原创 [C++][算法基础]区间选点(贪心 + 区间问题1)

给定 𝑁 个闭区间 [𝑎𝑖,𝑏𝑖],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。输出选择的点的最小数量。位于区间端点上的点也算作区间内。

2024-04-28 21:41:56 179

原创 [C++][算法基础]滑雪(记忆化搜索 / 递归)

给定一个 𝑅 行 𝐶 列的矩阵,表示一个矩形网格滑雪场。矩阵中第 𝑖 行第 𝑗 列的点表示滑雪场的第 𝑖 行第 𝑗 列区域的高度。一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。在给定矩阵中,一条可行的滑行轨迹为 24−17−2−1。在给定矩阵中,最长的滑行轨迹为 25−24−23−…−3−2−1,沿途共经过 25 个区域。

2024-04-28 16:03:15 165

原创 [C++][算法基础]没有上司的舞会(树形动态规划)

Ural 大学有 N𝑁 名职员,编号为 1∼𝑁。他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。每个职员有一个快乐指数,用整数 𝐻𝑖 给出,其中 1≤𝑖≤𝑁。现在要召开一场周年庆宴会,不过,没有职员愿意和直接上司一起参会。在满足这个条件的前提下,主办方希望邀请一部分职员参会,使得所有参会职员的快乐指数总和最大,求这个最大值。

2024-04-28 16:01:24 179

原创 [C++][算法基础]最短汉密尔顿路径(状态压缩动态规划)

给定一张 𝑛 个点的带权无向图,点从 0∼𝑛−1 标号,求起点 0 到终点 𝑛−1 的最短 Hamilton 路径。Hamilton 路径的定义是从 0 到 𝑛−1 不重不漏地经过每个点恰好一次。

2024-04-28 15:59:35 182

原创 [C++][算法基础]蒙特里安的梦想(状态压缩动态规划)

求把 𝑁×𝑀 的棋盘分割成若干个 1×2 的长方形,有多少种方案。例如当 𝑁=2,𝑀=4 时,共有 5 种方案。当 𝑁=2,𝑀=3 时,共有 3 种方案。

2024-04-28 15:57:33 92

原创 [C++][算法基础]计数问题(数位统计动态规划)

给定两个整数 𝑎 和 𝑏,求 𝑎 和 𝑏 之间的所有数字中 0∼9 的出现次数。其中0出现 10 次,1出现 10 次,2出现 7 次,3出现 3 次等等…

2024-04-28 15:55:21 140

原创 [C++][算法基础]整数划分(统计动态规划)

一个正整数 𝑛 可以表示成若干个正整数之和,形如:𝑛=𝑛1+𝑛2+…+𝑛𝑘,其中 𝑛1≥𝑛2≥…≥𝑛𝑘,𝑘≥1。我们将这样的一种表示称为正整数 𝑛 的一种划分。现在给定一个正整数 𝑛,请你求出 𝑛 共有多少种不同的划分方法。

2024-04-28 15:52:35 234

原创 [C++][算法基础]石子合并(区间动态规划)

设有 𝑁 堆石子排成一排,其编号为 1,2,3,…,𝑁。每堆石子有一定的质量,可以用一个整数来描述,现在要将这 𝑁 堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。例如有 4 堆石子分别为1 3 5 2, 我们可以先合并 1、2 堆,代价为 4,得到4 5 2, 又合并 1、2 堆,代价为 9,得到9 2,再合并得到 11,总代价为 4+9+11=24;

2024-04-28 15:42:30 216

原创 [C++][算法基础]编辑距离问题(动态规划)

1. 最短编辑距离问题现在请你求出,将 𝐴 变为 𝐵 至少需要进行多少次操作。

2024-04-26 20:44:24 370

原创 [C++][算法基础]最长公共子序列(动态规划)

给定两个长度分别为 𝑁 和 𝑀 的字符串 𝐴 和 𝐵,求既是 𝐴 的子序列又是 𝐵 的子序列的字符串长度最长是多少。

2024-04-26 20:41:01 210

原创 [C++][算法基础]最长上升子序列(动态规划 / 贪心 + 二分)

1. 数据量较小情况下:动态规划给定一个长度为 𝑁 的数列,求数值严格单调递增的子序列的长度最长是多少。

2024-04-26 20:39:20 263

原创 [C++][算法基础]数字三角形(动态规划)

给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。

2024-04-26 20:36:16 200

原创 [C++][算法基础]四种基本背包问题(动态规划)

有 𝑁 组物品和一个容量是 𝑉 的背包。每组物品有若干个,同一组内的物品最多只能选一个。每件物品的体积是,价值是,其中 𝑖 是组号,𝑗 是组内编号。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。输出最大价值。

2024-04-25 23:15:19 579

原创 [C++][算法基础]解异或线性方程组(高斯消元)

输入一个包含 𝑛 个方程 𝑛 个未知数的异或线性方程组。方程组中的系数和常数为 0 或 1,每个未知数的取值也为 0 或 1。求解这个方程组。其中表示异或(𝑋𝑂𝑅),𝑀[𝑖][𝑗] 表示第 𝑖 个式子中 𝑥[𝑗] 的系数,𝐵[𝑖] 是第 𝑖 个方程右端的常数,取值均为 0 或 1。

2024-04-24 22:50:36 126

原创 [C++][算法基础]解线性方程组(高斯消元)

输入一个包含 𝑛 个方程 𝑛 个未知数的线性方程组。方程组中的系数为实数。求解这个方程组。

2024-04-24 22:48:43 357

原创 [C++][算法基础]四种基本Nim游戏(博弈论)

给定 𝑛 堆石子,两位玩家轮流操作,每次操作可以取走其中的一堆石子,然后放入两堆的石子(新堆规模可以为 0,且两个新堆的石子总数可以大于取走的那堆石子数),最后无法进行操作的人视为失败。问如果两人都采用最优策略,先手是否必胜。

2024-04-24 19:50:18 555

原创 [C++][算法基础]能被整除的数(容斥原理)

给定一个整数 𝑛 和 𝑚 个不同的质数 𝑝1,𝑝2,…,𝑝𝑚。请你求出 1∼𝑛 中能被 𝑝1,𝑝2,…,𝑝𝑚 中的至少一个数整除的整数有多少个。

2024-04-24 01:08:09 393

原创 [C++][算法基础]四种求组合数基本情况

输入 𝑎,𝑏,求的值。注意结果可能很大,需要使用高精度计算。

2024-04-22 20:23:45 470

原创 [C++][算法基础]线性同余方程(扩展欧几里得算法)

给定 𝑛 组数据 𝑎𝑖,𝑏𝑖,𝑚𝑖,对于每组数求出一个 𝑥𝑖,使其满足 𝑎𝑖×𝑥𝑖 ≡ 𝑏𝑖(mod𝑚𝑖),如果无解则输出impossible。

2024-04-21 16:46:19 237

原创 [C++][算法基础]扩展欧几里得算法

给定 𝑛 对正整数 𝑎𝑖,𝑏𝑖,对于每对数,求出一组 𝑥𝑖,𝑦𝑖,使其满足 𝑎𝑖×𝑥𝑖+𝑏𝑖×𝑦𝑖=𝑔𝑐𝑑(𝑎𝑖,𝑏𝑖)。

2024-04-21 16:44:08 259

原创 [C++][算法基础]求乘法逆元(快速幂)

若整数 b,m 互质,并且对于任意的整数 a,如果满足 b|a,则存在一个整数 x,使得,则称 x 为 b 的模 m 乘法逆元,记为。b 存在乘法逆元的充要条件是 b 与模数 m 互质。当模数 m 为质数时,即为 b 的乘法逆元。

2024-04-20 17:31:48 246

原创 [C++][算法基础]求a的b次方模p的值(快速幂)

给定 n 组,对于每组数据,求出的值。

2024-04-20 17:21:28 296

原创 [C++][算法基础]欧拉函数(线性筛)

给定一个正整数 n,求 1∼n 中每个数的欧拉函数之和。

2024-04-19 21:35:02 346

原创 [C++][算法基础]欧拉函数(常规求质数)

1∼N 中与 N 互质的数的个数被称为欧拉函数,记为 ϕ(N)。若在算数基本定理中,N=,则:ϕ(N) = N×××…×。

2024-04-19 21:33:51 191

原创 [C++][算法基础]最大公约数(欧几里得算法)

给定 n 对正整数,请你求出每对数的最大公约数。

2024-04-18 14:01:04 329

原创 [C++][算法基础]求约数之和

给定 n 个正整数,请你输出这些数的乘积的约数之和,答案对+7 取模。

2024-04-18 13:58:49 364

原创 [C++][算法基础]求约数个数

给定 n 个正整数,请你输出这些数的乘积的约数个数,答案对+7 取模。

2024-04-18 13:56:43 231

原创 [C++][算法基础]求约数(试除法)

给定 n 个正整数,对于每个整数,请你按照从小到大的顺序输出它的所有约数。

2024-04-18 13:54:15 316

原创 [C++][算法基础]筛选质数(线性筛)

给定一个正整数 n,请你求出 1∼n 中质数的个数。

2024-04-17 14:14:41 890

原创 [C++][算法基础]筛选质数(埃氏筛)

给定一个正整数 n,请你求出 1∼n 中质数的个数。

2024-04-17 14:13:35 464

原创 [C++][算法基础]分解质因数(试除法)

给定 n 个正整数 ai,将每个数分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。

2024-04-17 14:11:44 185

原创 [C++][算法基础]判定质数(试除法)

给定 n 个正整数 ai,判定每个数是否是质数。

2024-04-17 14:10:05 486

转载 [C++][算法基础]二分图的最大匹配(匈牙利算法)

给定一个二分图,其中左半部包含 n1 个点(编号 1∼n1),右半部包含 n2 个点(编号 1∼n2),二分图共包含 m 条边。数据保证任意一条边的两个端点都不可能在同一部分中。请你求出二分图的最大匹配数。二分图的匹配:给定一个二分图 G,在 G 的一个子图 M 中,M 的边集 {E} 中的任意两条边都不依附于同一个顶点,则称 M 是一个匹配。二分图的最大匹配:所有匹配中包含边数最多的一组匹配被称为二分图的最大匹配,其边数即为最大匹配数。

2024-04-16 20:47:33 189

原创 [C++][算法基础]判定二分图(染色法)

给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环。请你判断这个图是否是二分图。

2024-04-16 20:45:17 177

原创 [C++][算法基础]求最小生成树(Kruskal)

给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环,边权可能为负数。求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。给定一张边带权的无向图 G=(V,E),其中 V 表示图中点的集合,E 表示图中边的集合,n=|V|,m=|E|。由 V 中的全部 n 个顶点和 E 中 n−1 条边构成的无向连通子图被称为 G 的一棵生成树,其中边的权值之和最小的生成树被称为无向图 G 的最小生成树。

2024-04-15 15:14:21 255

原创 [C++][算法基础]求最小生成树(Prim)

给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环,边权可能为负数。求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。给定一张边带权的无向图 G=(V,E),其中 V 表示图中点的集合,E 表示图中边的集合,n=|V|,m=|E|。由 V 中的全部 n 个顶点和 E 中 n−1 条边构成的无向连通子图被称为 G 的一棵生成树,其中边的权值之和最小的生成树被称为无向图 G 的最小生成树。

2024-04-15 15:12:08 258

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除