- 博客(7)
- 收藏
- 关注
原创 优先队列的自定义排序
优先队列的自定义排序优先队列那么何为优先队列呢,在优先队列中,元素被赋予优先级,当访问元素时,具有最高级优先级的元素先被访问(即优先队列具有最高级先出的行为特征)优先队列在头文件#include<queue>中;其声明格式为:priority_queue<int>ans; //声明一个名为ans的整型的优先队列基本操作有:empty( ) //判断一个队列是否为空pop( ) //删除队顶元素top( ) //返回优先队列的队顶元素push( ) .
2021-04-11 22:10:17
1978
1
原创 博弈论
博弈论一、巴什博奕(Bash Game)1.游戏规则:只有一堆n个物品,两个人轮流从这堆物品中取物, 规定每次至少取一个,最多取m个。最后取光者得胜。2.详解:显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的取法,.
2021-04-11 22:09:22
471
原创 最大公约数和最小公倍数
最大公约数和最小公倍数一、最大公约数和最小公约数的关系 假设x和y的最大公约数是m,最小公倍数是n,则xy=mn (所以我们只需求出两个数的最大公约数,即可得到它们的最小公倍数)二、最大公约数的三种求法1.更相止损法 两个正整数a和b(a>b),它们的最大公约数等于a-b的差值c和较小数b的最大公约数。我来介绍一下这个算法的优点,就是避免了大整数取模导致效率低下,但是运算次数要比辗转相除多得多,所以我们在使用的时候需要判断一下。int gcd(int a,in.
2021-04-11 22:05:33
706
原创 双指针
双指针什么是双指针(对撞指针,快慢指针)双指针,指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行扫描,从而达到相应的目的。换言之,双指针法充分使用了数组有序这一特征,从而在某些情况下能够简化一些运算。对撞指针对撞指针是指在有序数组中,将指向最左侧的索引定义为左指针(left),最右侧的定义为右指针(right),然后从两头向中间进行数组遍历。对撞数组适用于有序数组,也就是说当你遇到题目给定有序数组时,应该第一时间想到.
2021-04-11 21:59:59
252
原创 位运算例题
位运算例题tags: 位运算 快速幂 算法一、a^b题目求a的b次方对p取模的值,其中 1<=a,b,p<=10^9输入描述:第一行a,第二行b,第三行p。输出描述:一个整数,表示a^bmodp的值。思路a^16 = (a8)2 = ((a4)2)^2 = (((a2)2)2)2循环16次 vs 循环3次eg:a^26 = a^16 * a^8 *a2=(((a2)2)2)^2 + ((a2)2)^2 + (a^2)26 =16+8+226的二进制为110101.
2021-04-11 21:59:03
740
原创 全排列
全排列函数排序 next_permutation() prev_permutation()注意事项函数next_permutation()是按照字典序产生排列的,并且是从数组中当前的字典序开始依次增大直至到最大字典序函数prev_permutation()是按照字典序产生排列的,并且是从数组中当前的字典序开始依次减小直至到最小字典序即二者排序方式是完全相反的,前者按照升序进行排列,后者按照降序进行排列(此方法不光可应用于整型,字符型可是可以的)介绍存在于头文件中,有如下代码int .
2021-04-11 21:57:59
129
原创 分解质因子
分解质因子 下面是一道例题,简单的介绍了如何分解质因数,便于在之后遇到非常大的数据时进行处理 **分解质因子**题目描述 将一个正整数分解质因数,例如,输入90,输出2 3 3 5。 输入 输入一个正整数n(2<=n<=2000)。 输出 从小到大输出n的所有质因子,每两个数之间空一格。 样例输入20样例输出 2 2 5#include<iostream>using namespace std;bool
2021-04-11 21:56:22
322
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人