- 博客(52)
- 收藏
- 关注
原创 STL容器支持的内联函数(易忘记混淆版)
mp.find(2) //从前往后找,若找到,返回指向该处的迭代器;反之,返回迭代器mp.end()st.count(2);//返回key为2的个数(map中只可能是0或者1)注意:没找到返回-1!个数n+元素elem。
2025-10-12 19:14:23
186
原创 算法笔记·数学·扩展欧几里得算法
摘要:该问题要求对给定的n对正整数(ai,bi),使用扩展欧几里得算法求解满足ai×xi + bi×yi = gcd(ai,bi)的整数解(xi,yi)。算法通过递归地应用欧几里得算法,在回溯时更新x和y的值来获得解。实现时,当a%b=0时返回x=0,y=1;否则递归求解并调整x,y的值。该算法高效,时间复杂度为O(log min(a,b)),适用于大规模数据(n≤10^5)。示例代码展示了具体实现过程。
2025-05-25 17:04:00
509
原创 算法笔记·数学·快速幂求乘法逆元
摘要:本文介绍了求解模数乘法逆元的问题。给定n组整数ai和质数pi,要求计算ai模pi的乘法逆元。核心思路是利用费马小定理:当p为质数且a与p互质时,逆元为a^(p-2) mod p。通过快速幂算法实现高效计算,时间复杂度为O(log p)。若a是p的倍数则输出"impossible"。该方法适用于大数范围(1≤ai,pi≤2×10^9),每组数据可在对数时间内求解。代码演示了快速幂函数qmi的实现和主程序的输入输出处理。
2025-05-25 01:28:18
354
原创 算法学习笔记·数学·快速幂
本文介绍了使用快速幂算法计算a^b mod p的问题。给定n组数据,每组包含a、b、p三个整数,要求输出a^b mod p的值。核心算法通过将指数b分解为二进制形式,利用幂的平方性质将时间复杂度优化至O(logb)。代码实现包括预处理输入数据,调用快速幂函数进行计算,并对中间结果及时取模防止溢出。该方法适用于大规模数据(1≤n≤100000),且能高效处理大指数运算(1≤a,b,p≤2×10^9)。
2025-05-24 16:49:22
284
原创 算法笔记·数学·欧拉函数
摘要:本文介绍了求解欧拉函数的算法实现。欧拉函数ϕ(N)定义为1∼N中与N互质的数的个数。给定n个正整数ai,程序通过分解质因数的方法计算每个数的欧拉函数值。具体实现是:对于每个数a,先初始化结果为a本身,然后遍历其所有质因数i,将结果更新为res=res/i*(i-1),最后处理剩余的质因数(若a>1)。该算法时间复杂度为O(√a)每个数,适用于1≤ai≤2×10^9的范围。示例输入3个数3/6/8时,正确输出2/2/4。
2025-05-24 15:21:50
319
原创 算法笔记·数学·最大公约数
摘要:本文介绍了如何计算多个整数对的最大公约数(GCD)。通过欧几里得算法(辗转相除法)实现,其核心原理是递归调用gcd(a,b)=gcd(b,a%b)直到余数为0。程序首先读取整数对的数量n,然后对每对数应用该算法并输出结果。该方法高效简洁,适用于大规模数据(n≤10^5,数值≤2×10^9)。示例输入输出展示了算法的正确性,代码实现仅需10行左右的核心逻辑。
2025-05-24 15:12:01
374
原创 算法笔记·数学·约数之和
摘要:该问题要求计算n个正整数乘积的约数之和,并对1e9+7取模。解决思路是将每个数分解质因数,统计所有质因数的次数,然后利用约数之和公式:(p1^0+p1^1+...+p1^a1)...(pk^0+pk^1+...+pk^ak)。代码实现通过质因数分解和快速计算等比数列项来完成,最终结果取模输出。时间复杂度主要取决于质因数分解过程。输入样例3个数2、6、8,输出其乘积96的约数之和252。
2025-05-24 14:58:07
282
原创 算法笔记.匈牙利算法求最大匹配
给定一个二分图,其中左半部包含 n1个点(编号 1∼n1),右半部包含 n2 个点(编号 1∼n2),二分图共包含 m 条边。数据保证任意一条边的两个端点都不可能在同一部分中。请你求出二分图的最大匹配数。二分图的匹配:给定一个二分图 GG,在 GG 的一个子图 MM 中,MM 的边集 {E}{E} 中的任意两条边都不依附于同一个顶点,则称 MM 是一个匹配。二分图的最大匹配:所有匹配中包含边数最多的一组匹配被称为二分图的最大匹配,其边数即为最大匹配数。
2025-05-01 11:29:44
237
原创 算法笔记.kruskal算法求最小生成树
给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环,边权可能为负数。求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。给定一张边带权的无向图 G=(V,E),其中 V 表示图中点的集合,E 表示图中边的集合,n=|V|,m=|E|。由 V 中的全部 n 个顶点和 E 中 n−1 条边构成的无向连通子图被称为 G 的一棵生成树,其中边的权值之和最小的生成树被称为无向图 G 的最小生成树。
2025-04-28 11:19:38
394
原创 算法笔记.prim算法
给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环,边权可能为负数。求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。给定一张边带权的无向图 G=(V,E),其中 V 表示图中点的集合,E 表示图中边的集合,n=|V|,m=|E|。由 V 中的全部 n 个顶点和 E 中 n−1 条边构成的无向连通子图被称为 G 的一棵生成树,其中边的权值之和最小的生成树被称为无向图 G 的最小生成树。
2025-04-28 09:59:19
335
原创 算法笔记.Floyd算法
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,边权可能为负数。再给定 kk 个询问,每个询问包含两个整数 x 和 y,表示查询从点 x 到点 y 的最短距离,如果路径不存在,则输出impossible。数据保证图中不存在负权回路。
2025-04-24 23:22:46
356
原创 算法笔记.spfa算法(bellman-ford算法的改进)
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,。请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出impossible。数据保证不存在负权回路。
2025-04-24 23:02:36
465
原创 算法笔记.bellman_ford求有边数限制的最短路径
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,。请你求出从 1 号点到 n 号点的最多经过 k 条边的最短距离,如果无法从 1 号点走到 n 号点,输出impossible。注意:图中可能。
2025-04-14 12:58:02
794
原创 算法笔记.拓扑排序.有向图的拓扑排序
若一个由图中所有点构成的序列 A 满足:对于图中的每条边 (x,y),x 在 A 中都出现在 y 之前,则称 A 是该图的一个拓扑序列。接下来 m 行,每行包含两个整数 x 和 y,表示存在一条从点 x 到点 y 的有向边 (x,y)。给定一个 n 个点 m条边的有向图,点的编号是 1 到 n,图中可能存在重边和自环。请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出 −1。共一行,如果存在拓扑序列,则输出任意一个合法的拓扑序列即可。bfs结束时的判断写法,避免if ,else使用,更简洁。
2025-04-11 10:51:25
246
原创 算法笔记.散列(哈希)表
1.开放寻址法:2.拉链法:维护一个集合,支持如下几种操作:现在要进行 N 次操作,对于每个询问操作输出对应的结果。第一行包含整数 N,表示操作数量。接下来 N 行,每行包含一个操作指令,操作指令为 , 中的一种。对于每个询问指令 ,输出一个询问结果,如果 xx 在集合中出现过,则输出 ,否则输出 。每个结果占一行。1≤N≤ −109≤x≤ 输出样例: 我的代码: 一、开放寻址法: 二、拉链法: 参考文献: Acwing.第二章.模拟哈希表 B站视频@蓝不过海呀.
2025-04-06 15:51:38
340
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅