AcWing
文章平均质量分 77
AcWing算法基础课的一些笔记
SharkWeek.
Make your hands dirty.
展开
-
动态规划——最长上升子序列模型
最长上升子序列模型是动态规划问题的一个经典模型。最长上升子序列模型有两种解法。第一种解法时间复杂度为O(N2)。它用一个数组f[N]存储从第1个位置开始,到第i个位置的最长上升子序列的长度。状态转移方程为:f[i] = max(f[i], f[j] + 1)。其中a[i] > a[j], 并且j取值为1 ~ i - 1。第二种解法时间复杂度为O(nlogn)。它用一个数组g[N]存储长度为i的子序列的最后一个元素的值。如果是求上升子序列,那么数组g应该也是上升的;如果是求下降子序列,那么数组g是下降的。原创 2024-08-15 14:32:03 · 857 阅读 · 0 评论 -
AcWing算法提高课笔记——数字三角形
本文给出了几道数字三角形模型的题解。数字三角形模型通常给定一个矩阵,从矩阵的左上角走到右下角,每次只能向右走或者向下走,求最大值或者最小值。这种问题可以用f[i, j]来表示从[1, 1]走到[i, j]处的Max\Min,有状态转移方程:如果是走两遍,就用f[k, i1, i2]表示从[1, 1]走到[i1, j1]和[i2, j2]处的Max\Min,其中i1 + j1 = k = i2 + j2。状态转移方程为:本题所有题目都来自AcWing算法提高课。原创 2024-08-14 17:19:03 · 1009 阅读 · 0 评论 -
AcWing算法基础课笔记——记忆化搜索:滑雪
题目描述:给定一个R行C列的矩阵,表示一个矩形网格滑雪场。矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。在给定矩阵中,一条可行的滑行轨迹为24-17-2-1。在给定矩阵中,最长的滑行轨迹为25-24-23-…-3-2-1,沿途共经过25个区域。原创 2024-06-28 10:40:29 · 295 阅读 · 0 评论 -
AcWing算法基础课笔记——树形DP:没有上司的舞会
Ural大学有N名职员,编号为1~N。他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。每个职员有一个快乐指数,用整数 Hi 给出,其中 1≤i≤N。现在要召开一场周年庆宴会,不过,没有职员愿意和直接上司一起参会。在满足这个条件的前提下,主办方希望邀请一部分职员参会,使得所有参会职员的快乐指数总和最大,求这个最大值。第一行一个整数N。接下来N行,第 i 行表示 i 号职员的快乐指数Hi。接下来N-1行,每行输入一对整数L, K,表示K是L的直接上司。输出最大的快乐指数。原创 2024-06-27 23:26:30 · 868 阅读 · 0 评论 -
AcWing算法基础课笔记——最短Hamilton路径
> k - > j的路径,k是f[i, j]的倒数第二个结点,那么f[i, j] = f[i - {j}, k] + a[k, j]。其中i - {j}表示在i中删去j这个结点,a[k, j]表示从k走到j的代价。对于任意的x,y,z,数据保证 a[x,x]=0,a[x,y]=a[y,x] 并且 a[x,y]+a[y,z]>=a[x,z]。接下来 n 行每行n个整数,其中第i行第j个整数表示点i到j的距离(记为a[i,j])。表示从0走到j,走过的所有点是i的所有路径的最小值。原创 2024-06-27 22:40:37 · 623 阅读 · 0 评论 -
AcWing算法基础课笔记——状态压缩DP:蒙德里安的梦想
状态是整数,但把它看成二进制数,二进制中每一位是0或1表示不同的情况。原创 2024-06-25 20:45:11 · 383 阅读 · 0 评论 -
AcWing算法基础课笔记——线性DP
给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。第一行包含整数n,表示数字三角形的层数。接下来n行,每行包含若干整数,其中第i行表示数字三角形第i层包含的整数。输出一个整数,表示最大的路径数字和。1≤n≤500-10000 ≤ 三 角 形 中 的 整 数 ≤ 1000030。原创 2024-06-25 10:57:23 · 487 阅读 · 0 评论 -
AcWing算法基础课笔记——动态规划之背包问题
每件物品的体积是 𝑣_{𝑖𝑗},价值是 𝑤_{𝑖𝑗},其中 𝑖 是组号,𝑗 是组内编号。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。第一行有两个整数𝑁,𝑉,用空格隔开,分别表示物品组数和背包容量。(上面是01背包问题的方程,下面是完全背包问题的方程)每组物品有若干个,同一组内的物品最多只能选一个。有 𝑁 组物品和一个容量是 𝑉 的背包。输出一个整数,表示最大价值。原创 2024-06-24 14:19:40 · 583 阅读 · 0 评论 -
AcWing算法基础课笔记——卡特兰数与容斥原理
C2nn−C2nn−1=C2nnn+1C_{2n}^{n} - C_{2n}^{n - 1} = \frac{C_{2n}^n}{n + 1}C2nn−C2nn−1=n+1C2nn给定n个0和n个1,它们将按照某种顺序排成长度为2n的序列,求它们能排列成的所有序列中,能够满足任意前缀序列中0的个数都不少于1的个数的序列有多少个。输出的答案对109+7取模。输出格式共一行,包含整数n。输出格式共一行,包含一个整数,表示答案。数据范围1≤n≤105代码容斥原理题目给定一个整数 𝑛原创 2024-06-24 14:10:54 · 517 阅读 · 0 评论 -
AcWing算法基础课笔记——求组合数4
求组合数Ⅳ用来解决求Cab的问题(没有模运算)解决办法:分解质因数,实现高精度乘法。Cabb!a−ba!其中a!可以用pa!原创 2024-06-23 13:30:19 · 654 阅读 · 0 评论 -
AcWing算法基础课笔记——求组合数3
求组合数Ⅲ20万组数据,1≤b≤a≤10181≤p≤105,使用卢卡斯定理。Cab≡CamodpbmodpCapbpmodp时间复杂度为OlogpN⋅plogp。原创 2024-06-23 13:27:08 · 1070 阅读 · 0 评论 -
AcWing算法基础课笔记——求组合数2
给定n组询问,每组询问给定两个整数a,b,请你输出C(a,b) mod (10^9+7)的值。接下来n行,每行包含一组a和b。共n行,每行输出一个询问的解。原创 2024-06-23 10:52:32 · 997 阅读 · 0 评论 -
AcWing算法基础课笔记——求组合数1
给定n组询问,每组询问给定两个整数a,b请你输出C(a,b) mod (10^9+7)的值。接下来n行,每行包含一组a和b。共n行,每行输出一个询问的解。,用递推,时间复杂度。原创 2024-06-22 21:59:53 · 713 阅读 · 0 评论 -
AcWing算法基础课笔记——高斯消元
详见:https://www.acwing.com/problem/content/description/885/,但是考虑到本题作为一道模板题,考察点并不在于此,在此处卡住大多同学的代码没有太大意义,故增加 SPJ,对输出。如果给定线性方程组存在唯一解,则输出共 n 行,其中第 i 行输出第 i 个未知数的解,结果。接下来 n 行,每行包含 n+1 个实数,表示一个方程的 n 个系数以及等号右侧的常数。在数学中,一般没有正零或负零的概念,所以严格来说应当输出。输入一个包含 n 个方程 n 个未知数的。原创 2024-06-22 20:04:30 · 1265 阅读 · 0 评论 -
AcWing算法基础课笔记——欧拉函数、快速幂、扩展欧几里得算法
给定 𝑛 对正整数𝑎𝑖,𝑏𝑖,对于每对数,求出一组𝑥𝑖,𝑦𝑖,使其满足𝑎𝑖×𝑥𝑖+𝑏𝑖×𝑦𝑖=𝑔𝑐𝑑(𝑎𝑖,𝑏𝑖)。给定 n 组 ai,bi,pi,对于每组数据,求出 aibi mod pi 的值。输出共 𝑛 行,对于每组𝑎𝑖,𝑏𝑖,求出一组满足条件的𝑥𝑖,𝑦𝑖,每组结果占一行。对于每组数据,输出一个结果,表示 aibi mod pi 的值。欧拉函数:小于等于 n 的正整数中与 n 互质 的数的数目。本题答案不唯一,输出任意满足条件的𝑥𝑖,𝑦𝑖 均可。接下来𝑛 行,每行包含两个整数𝑎𝑖,𝑏𝑖。原创 2024-06-13 22:16:04 · 784 阅读 · 0 评论 -
AcWing算法基础课笔记——约数
给定 𝑛 个正整数 𝑎_𝑖,请你输出这些数的乘积的约数个数,答案对 10^9+7 取模。给定 n 个正整数 ai,对于每个整数 ai,请你按照从小到大的顺序输出它的所有约数。输出共 n 行,其中第 i 行输出第 i 个整数 ai 的所有约数。输出一个整数,表示所给正整数的乘积的约数个数,答案需对。输出共n行,每行输出一个整数对的最大公约数。接下来 𝑛 行,每行包含一个整数 𝑎_𝑖。接下来n行,每行包含一个整数对ai,bi。接下来 n 行,每行包含一个整数 ai。int范围内约数个数最多大概1500。原创 2024-06-13 18:22:35 · 749 阅读 · 0 评论 -
AcWing算法基础课笔记——质数
质数质数:在大于1的整数中,如果只包含1和它本身这两个约数,就被称之为质数。原创 2024-06-13 18:20:59 · 416 阅读 · 0 评论 -
AcWing算法基础课笔记——最小生成树与二分图
时间复杂度是 O(mlogm)O(mlogm), nn 表示点数,mm 表示边数。时间复杂度是 O(n2+m)O(n2+m), nn 表示点数,mm 表示边数。时间复杂度是 O(n+m)O(n+m), nn 表示点数,mm 表示边数。时间复杂度是 O(nm)O(nm), nn 表示点数,mm 表示边数。原创 2024-06-09 22:27:52 · 311 阅读 · 0 评论 -
AcWing算法基础课笔记——求最短路算法
时间复杂度 平均情况下 O(m)O(m),最坏情况下 O(nm)O(nm), nn 表示点数,mm 表示边数。时间复杂度 O(mlogn)O(mlogn), nn 表示点数,mm 表示边数。时间复杂是 O(n2+m)O(n2+m), nn 表示点数,mm 表示边数。时间复杂度是 O(nm)O(nm), nn 表示点数,mm 表示边数。时间复杂度 O(nm)O(nm), nn 表示点数,mm 表示边数。时间复杂度是 O(n3)O(n3), nn 表示点数。原创 2024-06-09 22:26:29 · 496 阅读 · 0 评论 -
AcWing算法基础课笔记——树与图的存储、遍历、拓扑排序
时间复杂度 O(n+m)O(n+m), nn 表示点数,mm 表示边数。时间复杂度 O(n+m)O(n+m), nn 表示点数,mm 表示边数。对于无向图中的边ab,存储两条有向边a->b, b->a。(1) 邻接矩阵:g[a][b] 存储边a->b。树是一种特殊的图,与图的存储方式相同。因此我们可以只考虑有向图的存储。原创 2024-06-09 22:24:40 · 236 阅读 · 0 评论 -
AcWing算法基础课笔记——堆
AcWing算法基础课中堆部分的笔记。原创 2024-04-18 22:51:57 · 1030 阅读 · 0 评论 -
acwing算法基础课学习笔记1
双指针算法、位运算、区间合并原创 2024-04-18 22:38:37 · 436 阅读 · 0 评论 -
acwing算法基础课学习笔记2--链表与邻接表、栈与队列、KMP
Acwing的算法基础课第二章数据结构的笔记,链表与邻接表、栈与队列、KMP原创 2024-04-18 22:45:10 · 1233 阅读 · 0 评论 -
AcWing算法基础课笔记——trie树
AcWing算法基础课第二章数据结构中有关Trie树的笔记。原创 2024-04-18 22:49:40 · 1101 阅读 · 0 评论 -
AcWing算法基础课笔记——哈希表
来自AcWing算法基础课第二章笔记。原创 2024-04-19 20:07:16 · 946 阅读 · 1 评论 -
哈希表入门练习题1
选自洛谷。原创 2024-04-23 11:29:07 · 662 阅读 · 0 评论