- 博客(16)
- 收藏
- 关注
原创 优先队列的应用
priority_queue 又称为优先队列,其底层是用堆来进行实现的。在优先队列中,队首元素一定是当前队列中优先级最高的那一个。我们可以再任何时候向优先队列里面加入元素,并且优先队列底层的数据结构:堆(heap)会自动调整结构,使得每次的队首元素都是优先级最高的。
2023-03-02 12:45:47
358
原创 c++产生随机数
采用死循环方式,设置一个变量ans表示产生的随机数在50到100范围之内的个数,每次产生一个范围在1到100的随机数,如果这个随机数在50~100的范围之内,则将其输出,同时ans++,当ans的值等于100的时候,跳出循环即可。算法思想:首先生成一个范围在0~50的随机数,然后将其加上50即可,之后就变成了50到100的随机数。为了保证每次产生的随机数不相等,需要采用srand函数来设置随机种子。:rand()函数产生随机数的范围为0—32767。例如:产生一个随机数在1~100的范围之内。
2023-02-23 11:18:45
4933
原创 链表 栈和队列以及KMP算法
:做算法题的时候,尽量不要用结构体加指针的方法去实现链表,因为每次插入新节点时需要用new来申请内存空间,此操作比较慢,很容易超时,因此,我们最好使用数组来模拟链表,实现比较快。
2023-02-22 17:03:17
178
原创 欧拉函数 快速幂 扩展欧几里得算法 线性同余方程 吉姆拉尔森计算公式
a k p的范围在10^9以内,不能采用暴力,暴力枚举时间复杂度为k,会超时。作用: 能够快速的求出a^k mod p的结果,时间复杂度为log(k)。先对整数n进行分解质因数,然后直接套用公式即可。二 筛法求欧拉函数:利用线性筛法,类似于筛素数。一. 欧拉函数:1到n中与n互质的数的个数。四 扩展欧几里得算法。
2023-02-21 14:57:32
266
原创 高斯消元
枚举每一列c,找出每一列当中中绝对值最大的那一行,然后将这一行换到当前没有固定的行当中最上面的那一行(即当前所在的行,第一列最上面的那一行就是第一行,第二列就是第二行),再把这一行的第一个数变成1,然后把这一行下面的所有行的第c列变成0,即从这一行的最后一个数开始枚举,一直到当前所在的列,将每一个数都除以第一个数即可,(第一个行从第一列开始枚举,第二行从第二列开始枚举,以此类推…,只需要在每次枚举列的时候,r++即可)
2023-02-21 13:52:04
65
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人