07 2021 档案

摘要:二分图的最大匹配 给定一个二分图,其中左半部包含 n1 个点(编号 1∼n1),右半部包含 n2 个点(编号 1∼n2),二分图共包含 m 条边。 数据保证任意一条边的两个端点都不可能在同一部分中。 请你求出二分图的最大匹配数。 二分图的匹配:给定一个二分图 G,在 G 的一个子图 M 中,M 的边 阅读全文
posted @ 2021-07-31 21:41 JK~ 阅读(165) 评论(0) 推荐(0)
摘要:染色法判定二分图 给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环。 请你判断这个图是否是二分图。 输入格式 第一行包含两个整数 n 和 m。 接下来 m 行,每行包含两个整数 u 和 v,表示点 u 和点 v 之间存在一条边。 输出格式 如果给定图是二分图,则输出 Yes,否则输出 N 阅读全文
posted @ 2021-07-31 20:47 JK~ 阅读(96) 评论(0) 推荐(0)
摘要:Kruskal算法求最小生成树 给定一个 nn 个点 mm 条边的无向图,图中可能存在重边和自环,边权可能为负数。 求最小生成树的树边权重之和,如果最小生成树不存在则输出 impossible。 给定一张边带权的无向图 G=(V,E)G=(V,E),其中 VV 表示图中点的集合,EE 表示图中边的集 阅读全文
posted @ 2021-07-31 14:39 JK~ 阅读(161) 评论(0) 推荐(0)
摘要:Prim算法求最小生成树 给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环,边权可能为负数。 求最小生成树的树边权重之和,如果最小生成树不存在则输出 impossible。 给定一张边带权的无向图 G=(V,E) 其中 V 表示图中点的集合,E表示图中边的集合,n=|V|, m=|E| 阅读全文
posted @ 2021-07-31 13:52 JK~ 阅读(136) 评论(0) 推荐(0)
摘要:#####深度优先的应用 树的重心 给定一颗树,树中包含 n 个结点(编号 1∼n)和 n−1 条无向边。 请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。 重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。 输入 阅读全文
posted @ 2021-07-31 11:36 JK~ 阅读(216) 评论(0) 推荐(0)
摘要:Floyd求最短路 给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,边权可能为负数。 再给定 k 个询问,每个询问包含两个整数 x 和 y,表示查询从点 x 到点 y 的最短距离,如果路径不存在,则输出 impossible。 数据保证图中不存在负权回路。 输入格式 第一行包含三个整数 阅读全文
posted @ 2021-07-30 16:58 JK~ 阅读(83) 评论(0) 推荐(0)
摘要:常见的图论算法 阅读全文
posted @ 2021-07-29 19:29 JK~ 阅读(41) 评论(0) 推荐(0)
摘要:spfa判断负环 给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数。 请你判断图中是否存在负权回路。 输入格式 第一行包含整数 n 和 m。 接下来 m 行每行包含三个整数 x,y,z表示存在一条从点 x 到点 y 的有向边,边长为 z。 输出格式 如果图中存在负权回路 阅读全文
posted @ 2021-07-29 19:26 JK~ 阅读(76) 评论(0) 推荐(0)
摘要:spfa求最短路 比较常用 给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数。 请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 impossible。 数据保证不存在负权回路。 输入格式 第一行包含整数 n 和 m。 接下来 m 行 阅读全文
posted @ 2021-07-29 11:53 JK~ 阅读(55) 评论(0) 推荐(0)
摘要:常用于解决存在负权边和环的问题,还可以用于有边数限制的问题中 有边数限制的最短路 给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数。 请你求出从 1 号点到 n 号点的最多经过 k 条边的最短距离,如果无法从 1 号点走到 n 号点,输出 impossible。 注意: 阅读全文
posted @ 2021-07-28 15:52 JK~ 阅读(60) 评论(0) 推荐(0)
摘要:稀疏图 Dijkstra求最短路 II 给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为非负值。 请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n号点,则输出 −1。 输入格式 第一行包含整数 n 和 m。 接下来 m 行每行包含三个整数 x,y,z表 阅读全文
posted @ 2021-07-28 11:38 JK~ 阅读(55) 评论(0) 推荐(0)
摘要:#####Dijkstra算法 朴素版dijkstra边数多,属于稠密图用邻接矩阵来存 Dijkstra求最短路 I 给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为正值。 请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 −1。 输入格 阅读全文
posted @ 2021-07-22 18:08 JK~ 阅读(87) 评论(0) 推荐(0)
摘要:#include<bits/stdc++.h> //万能头文件 using namespace std; //C = A * B vector<int> mul(vector<int> &A, int b) { vector<int> C; int t = 0; //进位 //为了防止A结束之后t 阅读全文
posted @ 2021-07-22 16:24 JK~ 阅读(64) 评论(0) 推荐(0)
摘要:#include <iostream> #include <vector> using namespace std; //A / b, 商是C,余数是r vector<int> div(vector<int>& A, int b, int& r) { vector<int> C; r = 0; fo 阅读全文
posted @ 2021-07-22 16:23 JK~ 阅读(82) 评论(0) 推荐(0)
摘要:线性同余方程 给定 n 组数据 ai,bi,mi对于每组数求出一个 xi,使其满足 ai×xi≡bi(modmi),如果无解则输出 impossible。 输入格式 第一行包含整数 n。 接下来 n 行,每行包含一组数据 ai,bi,mi。 输出格式 输出共 n 行,每组数据输出一个整数表示一个满足 阅读全文
posted @ 2021-07-22 10:48 JK~ 阅读(79) 评论(0) 推荐(0)
摘要:扩展欧几里得算法 给定 n 对正整数 ai,bi 对于每对数,求出一组 xi,yi 使其满足 ai×xi+bi×yi=gcd(ai,bi)。 输入格式 第一行包含整数 n。 接下来 n 行,每行包含两个整数 ai,bi。 输出格式 输出共 n 行,对于每组 ai,bi,求出一组满足条件的 xi,yi 阅读全文
posted @ 2021-07-22 10:44 JK~ 阅读(57) 评论(0) 推荐(0)
摘要:快速幂 给定 n 组 ai,bi,p对于每组数据,求出 abiimodpii 的值。 输入格式 第一行包含整数 nn。 接下来 nn 行,每行包含三个整数 ai,bi,piai,bi,pi。 输出格式 对于每组数据,输出一个结果,表示 abiimodpiaibimodpi 的值。 每个结果占一行。 阅读全文
posted @ 2021-07-22 10:41 JK~ 阅读(67) 评论(0) 推荐(0)
摘要:筛数求欧拉函数 给定一个正整数 nn,求 1∼n1∼n 中每个数的欧拉函数之和。 输入格式 共一行,包含一个整数 nn。 输出格式 共一行,包含一个整数,表示 1∼n1∼n 中每个数的欧拉函数之和。 数据范围 1≤n≤1061≤n≤106 输入样例: 6 输出样例: 12 #include <ios 阅读全文
posted @ 2021-07-22 10:32 JK~ 阅读(67) 评论(0) 推荐(0)
摘要:欧拉函数 给定 nn 个正整数 ai,请你求出每个数的欧拉函数。 欧拉函数的定义 1∼N 中与 N 互质的数的个数被称为欧拉函数,记为 ϕ(N)。 若在算数基本定理中,N=pa1pa2…pam,则: ϕ(N)= N×p1−1p1×p2−1p2×…×pm−1pm 输入格式 第一行包含整数 nn。 接下 阅读全文
posted @ 2021-07-22 10:29 JK~ 阅读(116) 评论(0) 推荐(0)
摘要:欧几里得算法 最大公约数 给定 n 对正整数 ai,bi,请你求出每对数的最大公约数。 输入格式 第一行包含整数 nn。 接下来 n 行,每行包含一个整数对 ai,bi。 输出格式 输出共 n 行,每行输出一个整数对的最大公约数。 数据范围 1≤n≤105 1≤ai,bi≤2×109 输入样例: 2 阅读全文
posted @ 2021-07-21 11:57 JK~ 阅读(49) 评论(0) 推荐(0)
摘要:参考埃及筛法的例题 线性筛法 #include <iostream> #include <algorithm> using namespace std; const int N = 10000010; int primes[N], cnt; bool st[N]; void get_primes(i 阅读全文
posted @ 2021-07-13 17:57 JK~ 阅读(58) 评论(0) 推荐(0)
摘要:筛法 筛质数 给定一个正整数 nn,请你求出 1∼n 中质数的个数。 输入格式 共一行,包含整数 nn。 输出格式 共一行,包含一个整数,表示 1∼n 中质数的个数。 数据范围 1≤n≤106 输入样例: 8 输出样例: 4 思想就是将每个数的倍数全部删掉,剩余的就是所有质数 未优化 #includ 阅读全文
posted @ 2021-07-13 17:38 JK~ 阅读(81) 评论(0) 推荐(0)
摘要:(2)分解质因数 分解质因数 给定 n 个正整数 ai,将每个数分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。 输入格式 第一行包含整数 n。 接下来 n 行,每行包含一个正整数 ai。 输出格式 对于每个正整数 ai,按照从小到大的顺序输出其分解质因数后,每个质因数的底数和指数 阅读全文
posted @ 2021-07-13 17:36 JK~ 阅读(222) 评论(0) 推荐(0)
摘要:1、质数 ​ 在大于1的整数中,如果只包含1和本身这两个约数,就被称为质数,或者交素数。 (1)质数的判定 试除法 时间复杂度O(sqrt(n)) #include <iostream> #include <algorithm> using namespace std; bool is_prime( 阅读全文
posted @ 2021-07-13 17:32 JK~ 阅读(272) 评论(0) 推荐(0)
摘要:求组合数2 给定 n 组询问,每组询问给定两个整数 a,b,请你输出 Cbamod(109+7) 的值。 输入格式 第一行包含整数 n。 接下来 n 行,每行包含一组 a 和 b。 输出格式 共 n 行,每行输出一个询问的解。 数据范围 1≤n≤10000 1≤b≤a≤105 输入样例: 3 3 1 阅读全文
posted @ 2021-07-12 15:11 JK~ 阅读(84) 评论(0) 推荐(0)
摘要:求组合数 III 卢克斯定理 给定 nn 组询问,每组询问给定三个整数 a,b,p,其中 p 是质数,请你输出 Cbamodp的值。 输入格式 第一行包含整数 n。 接下来 n 行,每行包含一组 a,b,p。 输出格式 共 n 行,每行输出一个询问的解。 数据范围 1≤n≤20 1≤b≤a≤10^` 阅读全文
posted @ 2021-07-12 15:09 JK~ 阅读(104) 评论(0) 推荐(0)
摘要:求组合数 1 给定 n 组询问,每组询问给定两个整数 a,b,请你输出 Cbamod(109+7) 的值。 输入格式 第一行包含整数 n。 接下来 n 行,每行包含一组 a 和 b。 输出格式 共 n 行,每行输出一个询问的解。 数据范围 1≤n≤10000 1≤b≤a≤2000 输入样例: 3 3 阅读全文
posted @ 2021-07-12 15:06 JK~ 阅读(45) 评论(0) 推荐(0)
摘要:求组合数 IV 输入 a,b,求 Cba 的值。 注意结果可能很大,需要使用高精度计算。 输入格式 共一行,包含两个整数 a 和 b。 输出格式 共一行,输出 Cba 的值。 数据范围 1≤b≤a≤5000 输入样例: 5 3 输出样例: 10 #include <iostream> #includ 阅读全文
posted @ 2021-07-12 11:24 JK~ 阅读(56) 评论(0) 推荐(0)
摘要:满足条件的01序列 卡特兰数 给定 n 个 0 和 n 个 1,它们将按照某种顺序排成长度为 2n 的序列,求它们能排列成的所有序列中,能够满足任意前缀序列中 0 的个数都不少于 1 的个数的序列有多少个。 输出的答案对 109+7 取模。 输入格式 共一行,包含整数 n。 输出格式 共一行,包含一 阅读全文
posted @ 2021-07-12 11:21 JK~ 阅读(46) 评论(0) 推荐(0)
摘要:高斯消元 高斯消元解线性方程组 输入一个包含 nn 个方程 nn 个未知数的线性方程组。 方程组中的系数为实数。 求解这个方程组。 下图为一个包含 mm 个方程 nn 个未知数的线性方程组示例: 输入格式 第一行包含整数 nn。 接下来 nn 行,每行包含 n+1n+1 个实数,表示一个方程的 nn 阅读全文
posted @ 2021-07-11 10:40 JK~ 阅读(63) 评论(0) 推荐(0)