自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 双指针算法(最长连续不重复子序列)

(双指针算法与其说是一种算法,倒不如说是一种思想:利用两个指针维护一段序列,使其中所有的数都满足某种规则)

2024-09-19 08:42:32 617

原创 中国剩余定理

但不一定是最小的所以还要。

2024-09-14 15:30:05 1701

原创 欧拉 函数

互质是公约数只有1的两个整数,叫做互质整数。公约数只有1的两个自然数,叫做互质自然数,后者是前者特殊情况。1和-1与所有整数互质,而且它们是唯一与0互质的整数1)两个不同的质数是互质的。2)较大数是质数的两个数是互质数3)相邻的两个自然数是互质数4)相邻的两个奇数是互质数5)最大公约数是1,两个数互质一种是这些成互质数的自然数是两两互质的。如2,3,5一种不是两两互质的,如6,8,9。

2024-08-31 20:43:31 475

原创 归并 排序

因为指针i和指针j永远指向的是下一个要进行比较的元素,也就是说,当前i和j指向的数是还还没有比的数,因此如果的话,当i = mid 或 j = r时,循环就会退出,而q[mid]和q[r]还没有比较,因此需要让,这样就不会漏掉q[mid]和q[r]的比较。

2024-08-31 14:58:37 861

原创 最大公约数(欧几里得算法)

那么此时左边的数就是一开始要求的两个数的最大公约数。,这样一直缩小小括号右边的数字,直到这个右边的数字为。,就是一开始要求的两个数的最大公约数。,输出小括号左边的数字。判断小括号内右边的数字。

2024-08-29 13:50:40 260

原创 约 数之和

其中:是的各个质因数,上式是的质因数乘积式。

2024-08-29 12:05:36 313

原创 约 数个数

其中:是的各个质因数,上式是的质因数乘积式。

2024-08-28 22:03:16 416

原创 筛质数(线性筛法)

假设有一个非质数,那么这个数可以被表示为一个最小质因数和一个因子相乘的形式如,那么就是的最小质因数,就是另一个因子线性筛法就是利用每个数的最小质因数筛掉这个非质数,如12就要用2筛掉,18就要用3筛掉step1:遍历之间的所有数,一是为了遍历之间的所有的质数,二也是为了找到和质数相乘的另一个数。step2:将质数(没有被筛掉的数就是质数)加入到数组中。

2024-08-28 18:01:22 897

原创 递归实现组合型枚举

判断这条路能不能走通,如果不能就直接中断,剪断这条路1 3 5 71 3 6 8。

2024-08-25 19:27:41 270

原创 分解质因数

这个数的因数只有 1 和它本身,又被称之为素数:这个数的因数除了 1 和它本身,还有其他数任何一个合数都可以被分解为几个质数相乘的形式,这几个质数就被称之为这个合 数的质因数,如 12 =2* 2 * 3,那么 2 和 3 就是 12 的质因数分解质因数:给定 n 个正整数 ai,将每个数分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。第一行包含整数 n。接下来 n 行,每行包含一个正整数 ai。

2024-08-25 16:47:07 584

原创 染色法判断二分图

如果某个图为二分图,那么它至少有两个顶点,且其。任何无回路的的图均是二分图。性质:(1)任何有奇数环(这个环的边数是奇数)的图都不是二分图(2)二分图中没有奇数环(3)任何无环图都是二分图(4)二分图都可以表示为类似于下面的形式。

2024-08-22 19:55:01 597

原创 dfs算法

直到找满了所有位置上的数字,开始一步步回头,直到除了上来的这条路还有路能再次往下走的情况,再次往下走,直到再次找满所有数字,再回头。,然后将对应位置上的数字设置为找到的数字,进入下一层的dfs,也就是寻找下一位的数字。给定一个整数 n,将数字 1∼n 排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。按字典序输出所有排列方案,每个方案占一行。遍历所有数字,找到当前还没有被占用的数字。共一行,包含一个整数 n。

2024-08-22 00:56:21 193

原创 kluskal算法求最小生成树

初始化并查集的p数组(存储父结点编号的)。

2024-08-21 19:49:43 1468

原创 并查集()

初始化p[N]数组(初始时每个结点都是一个集合,这个结点的祖宗结点就是就是它自己)

2024-08-21 15:16:58 295

原创 Prim算法求最小生成树

因为本题中没有说明图中不包括负环,因此可能存在负的自环,而负的自环不是没有意义的,因此,不能直接将自环的边删掉。判断在现有集合之外是否还有结点与集合联通(第一次循环情况特殊处理)在结合中新增节点后,判断结点到集合的最近距离是否需要更新。在集合中新增距离找到的距离集合最近的点。找到不在集合中的距离集合最近的点。prim算法干的事情就是。

2024-08-21 00:08:02 1658

原创 spfa判断图中是否存在负环

设置一个用来记录边数的数组(这个数组的具体含义会在后面模拟的过程详细解释)

2024-08-18 23:40:39 509 1

原创 spfa()算法(求最短路)

是对的优化,大部分求最短路问题都可以用spaf算法来求。如若图中有负权回路,不能用spfa算法,要用bellman_ford算法;若只有负权边,则可以用spfa算法Dijikstra算法适用于图中全都是正权边。

2024-08-18 16:43:39 485

原创 Bellman_ford算法

使用Dijikstra算法求最短路问题,要求图中不能存在负长度的边,也就是负权边。

2024-08-17 18:00:58 379

原创 Dijikstra算法(堆优化版)

当给定数据的范围不大时,采用朴素Dijikstra算法尚能ac,但若是数据范围大于10^5,那么朴素Dijikstra算法就会爆掉,所以我们需要采用主要是对朴素Dijikstra中找寻从距离编号 1 结点路径长度最近的结点的过程进行了优化:这段代码的详解请看。

2024-08-17 01:33:11 795

原创 树的重心(深度优先遍历)

先看题目:给定一颗树,树中包含 n 个结点(编号 1∼n)和 n−1 条无向边。请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。第一行包含整数 n,表示树的结点数。接下来 n−1 行,每行包含两个整数 a 和 b,表示点 a 和点 b 之间存在一条边。输出一个整数 m,表示将重心删除后,剩余各个连通块中点数的最大值。题目比较阴间,我们先翻译一下。

2024-08-13 21:55:29 513 1

原创 树和图()

1. 图的遍历(因为树可以理解为是特殊的图,因此这里不考虑树的遍历,只考虑图的遍历)1. 图的遍历(因为树可以理解为是特殊的图,因此这里不考虑树的遍历,只考虑图的遍历)给定一个具体的图,便于分析下面是树的结构。

2024-08-13 12:23:43 282

原创 c++stl库

【代码】c++stl库。

2024-08-10 18:47:45 185

原创 模拟堆()

首先介绍一下堆堆是一个完全二叉树结构,即除了最后一层的结点之外,每个结点都有两个子节点。

2024-08-09 16:08:10 339

原创 食物链(并查集)

并查集先上题目:动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B 吃 C,C 吃 A。现有 N 个动物,以 1∼N 编号。每个动物都是 A,B,C 中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这 N 个动物所构成的食物链关系进行描述:第一种说法是1 X Y,表示 X 和 Y 是同类。第二种说法是2 X Y,表示 X 吃 Y。此人对 N 个动物,用上述两种说法,一句接一句地说出 K 句话,这 K 句话有的是真的,有的是假的。

2024-08-08 22:04:33 703

原创 Trie树算法(采用二维数组模拟)

idx是一直自增长的,所以说,不同的字符占用的下标一定不一样,这句话很重要,举个例子细细体会一下,假设’abcdg’和’abcef’,’abc’是相同的,所以下标在son里都是一样的,但是’d’和’e’两个字符不相同,必然导致idx会自增长,所以’d’和’e’在son[c]这26个下标处必然处于不同的位置,这就实现了’c’同时指向’d’和’e’两个字母了。表示的是字符串最后一个字符时,那么按照道理说其中存储的就是下一个字符的位置,那么应该不存在,但是在插入操作中,给这个。能够方便的插入和查询字符串。

2024-08-06 14:05:59 289

原创 模拟 栈

实现一个栈,栈初始为空,支持四种操作:现在要对栈进行 𝑀 个操作,其中的每个操作 3 和操作 4 都要输出相应的结果。1.Push函数(插入元素功能)就是在e[]中插入一个新的元素。就是相当于栈顶减一。如果此时栈顶不为0,说明栈里面有元素。返回栈顶元素。对于队列,最经典的题目就是滑动窗口。给定一个大小为 n≤1000000 的数组。有一个大小为 𝑘 的滑动窗口,它从数组的最左边移动到最右边。你只能在窗口中看到 𝑘 个数字。每次滑动窗口向右移动一个位置。以下是一个例子:

2024-07-26 13:57:03 642

原创 二 分

直接上题目-1 -1图片:

2024-07-25 22:50:40 173

原创 双链表(采用数组模拟实现)

int idx;和单链表一样,还是先定义e[i],用来存储下标为i的结点的值。定义l[i],可以理解为一个函数,返回下标为i的结点的左边的结点的下标。定义r[i],理解为一个函数,返回下标为i的结点的右边结点的下标。定义idx,代表当前操作的结点的下标,如现在想要插入一个结点,idx就代表这个结点的下标(也可以理解为结点本身)

2024-07-25 16:42:46 482

原创 单链表(采用数组模拟实现)

e[idx] = x;head = idx;idx++;画张图更好理解还是画张图注意:代码中的k代表元素的下标,图中的也是,第k个插入的元素对应的下标应该是k-1。e[idx] = x;ne[k]= idx;idx++;还是画图注意:代码中的k代表元素的下标,图中的也是,第k个插入的元素对应的下标应该是k-1。

2024-07-24 12:33:07 442

原创 神秘数组的初始化

可以将int * a[]理解为定义了一个数组,里面所有的值都是指针类型的。填空,使得程序输出指定结果。

2024-07-23 16:39:57 268

原创 函数参数的引用传递和值传递区别

主要区别在于使用引用传递的话,会直接改变原始对象的元素,而使用值传递的话,就不需要担心这个问题。

2024-07-23 00:24:29 117

原创 位运算(常用的两种用法)

如当x = 1010时,则lowbit(x) = 10;当x = 101000时,则lowbit(x) = 1000;下面是实现功能x& -x。

2024-07-22 11:46:34 325

原创 差分(对数组中指定的一段数加上某个指定的值)

因为我们只是希望在a数组中的l到r这一段加上c,如果只是在差分矩阵b中的b[i]加上c,则a[i]之后的元素都会加上c,所以还需要在b[r+1]段减去一个c,就能使a[r+1]之后的加上c被抵消。差分数组中有一个b[i]加上c,那么之后的a[j](j>i=)都会加上c。对于一个给定的数组a,可以将其理解为是另一个数组b的前缀和形式,也就是。当我们把b[i]加上c后,会发现a[i]之后的a[i]都会加上c,因为。此时b数组中的元素为{0,a[1],a[2]-a[1],a[3]-a[2],....}

2024-07-22 09:39:29 338

原创 数组元素的目标和(双指针算法)

先上代码其中:核心部分是之所以使用双指针算法,是因为本体环境中,i与j都具有单调性。

2024-07-21 16:57:16 384

原创 子矩阵的和算法

子矩阵的和算法和前缀和算法,斐波那契数列类似,都是通过前一项的和不断递归得到的。

2024-07-21 00:01:53 187

原创 前缀和算法

因此代码中的遍历填充记录输入数据的i需要从1开始遍历,这样可以有效避免后续迭代递归过程中的数组越界问题,如当i取0时,s[i-1]就会取到s[-1],产生数组越界。前缀和算法的主要递归公式为。

2024-07-20 23:35:28 179

原创 页面切换功能

/指针初始指向主菜单//主菜单界面函数//设置界面函数//游戏界面函数//败北界面函数//胜利界面函数//控制界面切换的函数,根据flag的值不同,进行界面的切换。cout << "请输入选项对应序号:" << endl << "1--进入游戏" << "2--进入设置" << "3--退出程序";int choose;case 1://因为controller中while无限循环,因此只要改变flag的值就可以实现界面之间的切换break;

2024-07-20 10:08:16 340

原创 登录功能实现

定义全局变量其中:每个下标对应一套用户数据,如下标[1]:对应10002,李四,bbbbb。

2024-07-17 11:17:17 193

原创 快速 排序

请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。

2024-07-16 20:54:08 251

原创 二分查找算法

通过不断更新左边界和右边界,来缩小搜索范围。

2024-07-15 21:52:07 151

空空如也

空空如也

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

TA关注的人

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