算法基础课笔记
文章平均质量分 77
记录算法基础课中的知识点,供自己复习
Die love 6-feet-under
这个作者很懒,什么都没留下…
展开
-
笔记---贪心---排序不等式,绝对值不等式
之间,同理得所有组式子也同样要满足这个要求,则当所有条件都满足时,就可以让整个式子取得等号。现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。,请问如何安排他们的打水顺序才能使所有人的等待时间之和最小?要整个式子满足等号,那么就应该让每一组式子满足等号。输出一个整数,表示最小的等待时间之和。如果为奇数的情况下,可以使货仓偏向一边。输出一个整数,表示距离之和的最小值。显然,所有人等待的总时间就是。原创 2024-02-05 20:21:47 · 619 阅读 · 0 评论 -
笔记---贪心---哈夫曼Huffman树
并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使达达耗费的体力最少,并输出这个最小的体力耗费值。在一个果园里,达达已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。2.同一个贪心策略,n个节点的树的贪心最优解一定是n-1个节点的树的贪心最优解。每一次合并,达达可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。输出包括一行,这一行只包含一个整数,也就是最小的体力耗费值。接着,将新堆与原先的第三堆合并,又得到新的堆,数目为。1.值最小的两个点,在树中的深度。原创 2024-02-05 15:13:26 · 979 阅读 · 0 评论 -
笔记---贪心---区间问题
如果使得我们现在的方案选出来的点数为cnt,以答案数为ans,那么就一定满足ans <= cnt,同时我们的方案又可以保证覆盖所有的区间且尽量一个点覆盖多个区间,那么cnt >= ans,有根据夹逼定理,就可以得到cnt就是最优解ans。2.从前往后枚举所有区间,在所有能够覆盖指定区间的左端点的区间中选择一个右端点最大的区间,之后将下一次搜索的左端点更新成选择的区间的右端点。上题中所选的端点数,恰好就是本体所求的不想交区间数,因为有端点的地方就代表了是相交的区间,那么不相交的地方就一定有端点。原创 2024-02-05 13:08:10 · 672 阅读 · 0 评论 -
笔记---背包问题
有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 v[i],价值是 w[i]。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。对于01背包问题,只有选或不选,所有选法的集合便是由选的情况和不选的情况组成的以下为未优化二维做法一下为优化后的一维做法f[i][j]可以变为f[j]?题目仅要求最终的f[n][m]结果,故讨论选前多少个物品意义不大如果在原代码上进行修改可以得到所以可以直接从v[i]枚举到m。原创 2024-01-13 17:00:58 · 377 阅读 · 0 评论 -
AcWing.898.数字三角形(线性DP)
给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。原创 2024-01-15 10:35:08 · 389 阅读 · 0 评论 -
AcWing.895.最长上升子序列(含优化)
给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。原创 2024-01-15 11:18:42 · 407 阅读 · 0 评论 -
AcWing.895.最长公共子序列
给定两个长度分别为 N 和 M 的字符串 A 和 B,求既是 A 的子序列又是 B 的子序列的字符串长度最长是多少。原创 2024-01-15 15:14:52 · 388 阅读 · 0 评论 -
AcWing.282.石子合并
设有 N 堆石子排成一排,其编号为 1,2,3,…,N。每堆石子有一定的质量,可以用一个整数来描述,现在要将这 N 堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。例如有 4 堆石子分别为1 3 5 2, 我们可以先合并 1、2堆,代价为 4,得到4 5 2, 又合并 1、2堆,代价为 9,得到9 2,再合并得到 11,总代价为 4+9+11=24;原创 2024-01-15 21:59:30 · 382 阅读 · 0 评论 -
AcWing.902.最短编辑距离
现在请你求出,将 A 变为 B 至少需要进行多少次操作。原创 2024-01-16 16:13:10 · 345 阅读 · 0 评论 -
AcWing.899.编辑距离
给定 n 个长度不超过 1010 的字符串以及 m 次询问,每次询问给出一个字符串和一个操作次数上限。对于每次询问,请你求出给定的 n 个字符串中有多少个字符串可以在上限操作次数内经过操作变成询问给出的字符串。每个对字符串进行的单个字符的插入、删除或替换算作一次操作。原创 2024-01-16 17:02:09 · 381 阅读 · 0 评论 -
AcWing.900.整数划分(计数DP)
一个正整数 n 可以表示成若干个正整数之和,形如:n=n1+n2+…+nk,其中 n1≥n2≥…≥nk,k≥1。我们将这样的一种表示称为正整数 n 的一种划分。现在给定一个正整数 n,请你求出 n 共有多少种不同的划分方法。原创 2024-01-16 22:48:28 · 837 阅读 · 0 评论 -
AcWing.291.蒙德里安的梦想(状态压缩dp)
每次我们将横着的长方形摆放好之后,剩下的空间留给竖着的长方形的摆放方式是已经定好的,所以横着摆放的长方形的数量就是所有的摆放数量。来表示:在第i列中,从第i-1列占用到第i列的横向长方形的占用情况下的方案数量,并且。用二进制数来存储表示,有占位为1,没有为0,比如下图。为:横着摆放的长方形数量与所有的摆放数量相等。=0 时,表示输入终止,且该用例无需处理。等于1000000,第二列中,=4 时,共有 5 种方案。=3 时,共有 3 种方案。就会有1原创 2024-01-26 21:55:46 · 1080 阅读 · 0 评论 -
AcWing.91,最短Hamilton路径(状态压缩dp)
输出一个整数,表示最短 Hamilton 路径的长度。Hamilton 路径的定义是从 0 到。−1 的最短 Hamilton 路径。−1 不重不漏地经过每个点恰好一次。如何划分情况:以倒数第二个点来分类。−1 标号,求起点 0 到终点。的每一位表示每一个点有没有走过,如果倒数第二个点为0,1,2…个点的带权无向图,点从 0∼。里)的所有路径中的最小路径。原创 2024-01-27 12:03:13 · 550 阅读 · 0 评论 -
AcWing.285.没有上司的舞会
在满足这个条件的前提下,主办方希望邀请一部分职员参会,使得所有参会职员的快乐指数总和最大,求这个最大值。用f[u,0]表示:所有从以u为根节点的子树中选,并且不选择u这个点的方案得到的最优解。用f[u,1]表示:所有从以u为根节点的子树中选,并且选择u这个点的方案得到的最优解。(注意一下,后一个数是前一个数的父节点,不要搞反)。他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。:当我们选择上了子树的根节点之后,根节点上方的点就不能再选了。每个职员有一个快乐指数,用整数。输出最大的快乐指数。原创 2024-01-27 12:57:23 · 788 阅读 · 0 评论 -
AcWing.901.滑雪(记忆化搜索)
现在给定你一个二维矩阵表示滑雪场各区域的高度,请你找出在该滑雪场中能够完成的最长滑雪轨迹,并输出其长度(可经过最大区域数)。当然去到每一个方向都必须满足那个方向的高度更小,且不越界,并且在使用记忆化搜索时,题目中必须满足是个拓扑图,不能存在环。开始滑的最大值再加上第一步),如此求出每一个方向的最大值之后,再从四个最大值里找最大值。一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。原创 2024-01-27 14:14:42 · 612 阅读 · 0 评论 -
AcWing.338. 计数问题
给定两个整数 a 和 b,求 a 和 b 之间的所有数字中 0∼9 的出现次数。其中0出现 10 次,1出现 10 次,2出现 7 次,3出现 3 次等等…原创 2024-01-27 19:10:18 · 246 阅读 · 0 评论 -
笔记---质数,约数
最大公约数--欧几里得。原创 2024-01-28 12:49:06 · 130 阅读 · 0 评论 -
AcWing.873.欧拉函数
互质的数的个数被称为欧拉函数,记为 ϕ(N)。,即运用此公式进行求欧拉函数的过程。,请你求出每个数的欧拉函数。行,每行包含一个正整数 a。行,每行输出一个正整数 a。,那么欧拉函数的结果就是。若在算数基本定理中,原创 2024-01-29 20:52:16 · 457 阅读 · 0 评论 -
笔记---快速幂
对于每组数据,输出一个结果,表示 a。行,每行包含三个整数 a。,对于每组数据,求出 a。原创 2024-01-29 23:07:58 · 249 阅读 · 0 评论 -
笔记--扩展欧几里得算法
每组数据结果占一行,结果可能不唯一,输出任意一个满足条件的结果均可。行,每组数据输出一个整数表示一个满足条件的。本题答案不唯一,输出任意满足条件的。,对于每对数,求出一组。行,每行包含两个整数。行,每行包含一组数据。,求出一组满足条件的。,对于每组数求出一个。,则我们需要存在这样的。的最大公约数,就有解。原创 2024-01-30 18:51:04 · 846 阅读 · 0 评论 -
笔记---中国剩余定理
即Mi表示除了mi之外其他所有m的乘积,则Mi和mi是互质的,则我们可以求出。对于此道题:我们现在有很多个方程(x mod a。,即我们可以通过扩展欧几里得算法来求出逆元。),需要在每一步去合并方程。,求一个最小的非负整数。不存在,则输出 −1。+1 行包含两个整数。位有符号整数范围内。,数之间用空格隔开。原创 2024-01-31 15:17:01 · 795 阅读 · 0 评论 -
笔记---高斯消元
但是考虑到本题作为一道模板题,考察点并不在于此,在此处卡住大多同学的代码没有太大意义,故增加 SPJ,对输出。之后继续枚举,但是被换到最上面的那一行就不要动了,直至最后。在数学中,一般没有正零或负零的概念,所以严格来说应当输出。通过高斯消元,来使方程变为上三角形式,从而可以解得方程(大学线性代数)输入一个包含 n 个方程 n 个未知数的线性方程组。如果消过之后,是完美的上三角形,那么会得到唯一解。个未知数的解,结果保留两位小数。个实数,表示一个方程的。(非零)的方程,那么无解。的方程,那么就有无穷多解。原创 2024-01-31 19:12:33 · 576 阅读 · 0 评论 -
笔记---求组合数
①10w次询问——1原创 2024-02-02 10:25:23 · 970 阅读 · 0 评论 -
笔记---容斥原理
因为有时候n可能不能整除p,则下取整可以保证取到最大的那个与p成倍数的数。此处容斥原理体现为:这里选的每一个数都相当于一个小集合,集合数代表的便是选的数的个数。1个圆自己的-每2个圆相交的+有3个圆相交的-有4个圆相交的+…表示1到n中能被p整除的个数,即是p的倍数的个数有多少,那么。且观察可知选偶数个集合的时候是负的,而选奇数个集合时是正的。让我们求个数的时候,就可以用容斥原理来求。输出一个整数,表示满足条件的整数的个数。中的至少一个数整除的整数有多少个。有多个集合相交的部分,即求能够被。原创 2024-02-03 12:28:06 · 564 阅读 · 0 评论 -
笔记---简单博弈论
满足一下几个特征:1.两名玩家交替行动。2.在游戏进程的任意时刻,可以执行的合法行动与轮到哪名玩家无关。3.不能行动的玩家判为失败如果满足以上特征,那么就是一个公平组合游戏另一种游戏叫做有向图游戏:给定一个有向无环图,图中有一个唯一的起点,在起点上放有一枚棋子,两名玩家交替的把这枚棋子沿有向边进行移动,每次可以一定一步,最终无法移动的人判为失败给定n堆石子,两位玩家轮流操作,每次操作可以从任意一堆石子中拿走任意数量的石子(可以拿完,但不能不拿),最后无法进行操作的人视为失败。原创 2024-02-04 12:24:02 · 822 阅读 · 0 评论