自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 7-21 Hashing (25分)(平方探查法)

题目:分析:num[i]用于存放数值首先要判断输入的初始m是否为素数,如果不是素数,需要将m增加到素数确定了m之后,判断pos = num[i] % m这个位置在hashTable中是否已经被访问了,如果vis[pos]为false,说明此位置未被访问直接输出即可,如果为true,说明此位置已经被访问了,之后运用平方探查法找合适的位置,具体的做法是 nexPos = (pos + j*...

2020-03-29 18:14:38 254

转载 7-20 Sort with Swap(0, i) (25分)

题目分析:能够发现序列是由几个环组成,每个环内的元素排好序就可以使得环内元素在正确的位置上,走一遍样例就可以发现,一个环内的元素相互交换最少需要元素数-1次操作就可以排好序,由于只能和0交换,如果这个环包括0,那就需要交换元素数-1次,否则的话,需要把0交换进环,再交换出去,需要交换元素数-1+2次即元素数+1。如果一个元素本来就在正确位置那就不用交换。代码:#include <s...

2020-03-29 17:34:08 156

原创 天梯赛练习——7-17 Insert or Merge (25分)(归并+插入)

题目:代码:#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>using namespace std;const int MAXN = 105;int num[MAXN],tmp[MAXN],val[MAXN];int n;bo...

2020-03-28 16:16:16 118

原创 天梯赛练习——7-15 How Long Does It Take (25分)(关键路径+拓扑排序)

题目:分析:使用拓扑排序判断是否能够完成工程(即判断是否存在环),如果能够完成工程,要求出完成工程需要的最长时间,值得注意的是,最长时间并不一定是 n-1 这个点,可能是 0~n-1中的任何一个点,所以最后还需要一次循环找出最长的时间。代码:#include <iostream>#include <cstring>#include <cstdio>...

2020-03-27 20:31:20 195

原创 天梯赛练习——7-14 旅游规划 (25分)(Dijkstra)

题目:分析:此题属于最短路径问题,可以使用 迪杰斯特拉 解决,不过要多一个条件:当距离相等的情况下,要判断怎样花的钱更少。代码:#include <iostream>#include <cstring>#include <cstdio>#include <queue>#define INF 0x3f3f3f3fusing name...

2020-03-26 17:31:38 238

原创 天梯赛练习——7-6 Tree Traversals Again (25分)(前序+中序->后序)

题目:分析:从题目分析可知,入栈的顺序即为树的前序遍历,出栈的顺序即为树的中序遍历,分别使用数组pre,mid存储前序和后序遍历的结果,随后根据前序和后序的遍历结果即可求出后序遍历代码:#include <iostream>#include <cstring>#include <cstdio>#include <stack>#inc...

2020-03-25 10:23:52 117

原创 天梯赛练习——7-3 Pop Sequence (25分)

题目:分析:输入一行长度为 n 的数字之后,分别对应着num[1] , num[2] , num[3] , … , num[n],从 num[1] 开始遍历 , 如果当前栈中的元素为空 或者 栈顶的元素不等于num[1],那么就从 1 开始入栈(题目要求从1开始顺序入栈),如果入栈之后 栈中元素大于 m,说明此时栈已经溢出,则直接跳出循环,如果当前栈顶的元素等于num[1],那么就将当前的栈...

2020-03-24 17:05:14 402

原创 天梯赛练习——7-2 Reversing Linked List (25分)

题目:分析:首先,看明白要求,题目要求的是:每 k 个元素进行逆转,也就是说如果 k < n/2的话需要逆转多次。其次,题目中可能出现多条链,只需要输出需要的链即可下面的代码中应用了 algorithm 库中的 reverse 函数,用于逆转元素,详情代码如下:代码:#include <iostream>#include <cstring>#incl...

2020-03-24 14:42:35 280 1

原创 蓝桥杯——牌型种数(DFS)

题目:牌型种数小明被劫持到X赌城,被迫与其他3人玩牌。一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。这时,小明脑子里突然冒出一个问题:如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?请填写该整数,不要填写任何多余的内容或说明文字。分析:当前扑克牌都有五种可能,1是一张不拿,2是拿一张、3是拿两张、4是拿三...

2020-03-17 08:58:46 399

原创 数学知识

组合数递推公式Cnm=Cn−1m−1+Cn−1mC^{m}_{n} = C^{m-1}_{n-1} + C^{m}_{n-1}Cnm​=Cn−1m−1​+Cn−1m​欧几里得求最大公约数gcd(n,m)=gcd(m,n%m)gcd(n,m) = gcd(m,n\%m)gcd(n,m)=gcd(m,n%m)...

2020-03-16 11:39:31 65

原创 蓝桥杯——波动序列(动态规划+滚动数组)

题目:输入输出:题目分析:首先假设第一个数为 x,那么后面的数都是在 x的基础上进行加 a或者减 b操作,将这一操作用 P={a,-b}来表示,那么最终的和一定为:x+(x+P)+(x+2P)+...+(x+(n−1)P)=sx + (x+P) + (x+2P) + ... +(x+(n-1)P) = sx+(x+P)+(x+2P)+...+(x+(n−1)P)=s变换一下上述的等式...

2020-03-16 11:19:07 189

原创 蓝桥杯——扑克序列(全排列)

题目:next_permutation()函数介绍:next_permutation(a,a+n)是对数组a进行全排列的一个函数,在使用next_permutation()函数之前有一个要求,就是要实现将数组a按照从小到大的顺序排好,所以next_permutation()函数一般和sort()函数结合使用。代码:#include <iostream>#include &lt...

2020-03-15 14:47:43 264

原创 蓝桥杯——大臣的旅费(BFS+树的直径)

题目:输入输出:关于树的直径的重要结论:求树直径原理:以任意点 x 开始,先做一次BFS(DFS),找到最远点 y,然后以此点 y,进行一次BFS(DFS),找到最远点 z,z 到 y 就是树的直径,记做 d(z,y)。代码:#include <iostream>#include <cstring>#include <cstdio>#incl...

2020-03-15 10:03:58 144

原创 波兰表达式、逆波兰表达式

中缀表达式中缀表达式是最常见的运算表达式,如:3 + 5 * (2 + 6) - 1波兰表达式波兰表达式又称为前缀表达式,它是由中缀表达式经过一定的方式转换来的比如中缀表达式为:3+5*(2+6)-1 对应的前缀表达式为:- + 3 * 5 + 2 6 1对于中缀表达式从右向左遍历转换为前缀表达式,中途要是用栈进行存储转换规则如下:当遇到右括号时,直接将其压入栈中当遇到左括号时,...

2020-03-14 09:37:18 721

原创 HDU1686 Oulipo(KMP算法)

题目连接:原题目点击这里分析这里所要求的一个源字符串中能匹配多少个目标字符串,所以说在KMP算法的基础上需要改进一下,在j到达目标字符串的结尾的时候,即 j==strlen(目标串)时,使用 j=nex[j-1]来找到目标串的最长重复子串,其次呢,在刚开始的时候,while循环中全部使用strlen()进行判断的,所以总是超时,应该在while循环之外先使用 len存放strlen,这样才不...

2020-03-12 13:52:24 92

原创 蓝桥杯 Bit Compressor(DFS+剪枝)

题目:输入输出:代码:#include <iostream>#include <cstring>#include <cstdio>using namespace std;int l,n,len;char ch[45];int zeroNum,ans;void Dfs(int k,int zero,int one) //第一个参数表示指...

2020-03-11 20:30:59 341

原创 蓝桥杯——发现环(并查集+DFS)

题目:输入输出:分析:根据题目可知只会多出一条边,那么只有可能出现一个环,每当输入两个点的时候使用并查集判断两个点是否有相同的祖先,如果没有,将两个点合并,如果两个点已经具有共同的祖先,说明此时这条边构成了环,那么此时可以将这两个点作为环的起点和终点,使用DFS搜索这一条路径,所经过的点即为环上的点。代码:#include <iostream>#include <...

2020-03-05 17:17:52 511

原创 蓝桥杯真题——对局匹配(动态规划)

题目:输入输出:分析:可以将所有的分数分为k组,比如说k如果等于2,那么可以分为2组,分别为{0,2,4,…10000},{1,3,5,7,…,9999},那么此时在同一个小组中人才有机会匹配到,不同的小组之间的人不可能匹配到,其次,再使用一个数组val,来统计小组中每一个分数出现的次数,所以此时,我们对于每一个小组使用dp,dp[i]表示在同一个小组中前 i个分数中最多匹配不到的人数,...

2020-03-04 19:40:50 583

原创 蓝桥杯真题——小数第n位(快速幂)

题目:输入输出:分析:题目所要求的是小数第n位及其后面的两位,可以转化为求如下的结果:ans=ab∗10n+2mod1000ans = \dfrac{a}{b} * 10^{n+2}\quad mod\quad1000ans=ba​∗10n+2mod1000但是此时上述公式中存在 a/b,此时精度肯定无法保证,因此要用到下述的替换公式:abmodd=amodb∗db\dfrac{a...

2020-03-04 10:51:49 389

原创 蓝桥杯真题——分考场(DFS+剪枝)

题目:输入输出:分析:此题使用深搜来解决,从第一个人开始逐一的分配教室,分配教室的方案如下:遍历已经存在的教室,然后再遍历教室中的所有人,查看是否存在某一个人与当前要被分配教室的人认识,如果此教室中没有认识的人,那么我们可以将当前的人分配到这个教室中,当然也可以选择不分配到当前的教室,因为分配到当前的教室可能不是最优的选择,此时就要用到回溯,回溯的目的是为了寻找最优的解决方案,当遍历当前...

2020-03-03 18:10:36 376

原创 蓝桥杯——高僧斗法(博弈)

题目:输入输出:分析:此题属于博弈中的Nim博弈,我们分析一下小和尚所处的位置可发现这样一种状况:假设下标从1开始,不管偶数位的小和尚如何移动,位于此偶数位之前的一个小和尚必能移动相同的步数,使其与偶数位的小和尚的距离保持不变,那么我们就可以将所有的小和尚两两组合,比如说有 a1 a2 a3 a4 a5共5个和尚,可以分为(a1,a2),(a3,a4),a5,因为a2 a4不管如何移动,...

2020-03-02 18:21:30 732

原创 蓝桥杯真题——蚂蚁感冒(思维题)

题目:输入输出:分析:1、如果两只健康的蚂蚁碰面之后,两只蚂蚁就会分别掉头,我们可以将这种情况看做两只蚂蚁都穿过了对方,每只蚂蚁还是保持原来的方向不变进行前进。2、两只蚂蚁中的一只感冒,当两只蚂蚁碰面之后,按照之前的分析,这个感冒的蚂蚁仍然会按照原来的方向前进,但是此时,另一个健康蚂蚁穿过这只感冒的蚂蚁之后,自身也就会感冒。综合上面的情况,我们假设刚开始感冒的蚂蚁头朝向左边,那么,此...

2020-03-01 15:10:42 561

空空如也

空空如也

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

TA关注的人

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