
16届蓝桥杯备赛
蓝桥备赛,学习算法
全栈阿星
沉淀、分享、成长、热爱可抵岁月漫长。
展开
-
位图--存储亿单位级别的数据
位图--存储亿单位级别的数据原创 2024-11-05 23:15:33 · 337 阅读 · 0 评论 -
二分查找寻找左边界-2187. 完成旅途的最少时间
二分查找寻找左边界-2187. 完成旅途的最少时间原创 2024-10-05 18:21:18 · 276 阅读 · 0 评论 -
Leetcode刷题
采用双指针的思想,pre指针刚开始指向null,cur指针指向头,将cur指针指向pre,但在这之前需要将cur的下一个保存起来,因为cur指向pre的时候和后面的值断开了。原来是on方的时间复杂度,通过hashmap将时间复杂度变为on;原创 2024-05-09 18:10:29 · 306 阅读 · 1 评论 -
【蓝桥杯备赛国赛】5-5
想要末尾有0的存在必须要2和5,但是通过分析2的数目应该是远远多于5的,所以只要5的数目够多即可。所以for循环的层次也是10的九次方以上,必然会超时,想到了用二分法来解决。分析k的范围,10的18次方。如何计算N的阶乘包含多少个5呢?原创 2024-05-06 14:12:14 · 698 阅读 · 0 评论 -
Codeforces Round 943 (Div. 3)A-D
只要ai大于x的最大范围,都能得到ai+x就是下一个数字的。求最大公约数的代码gcd,如果x<y,需要叫交换x和y的值,如果y等于0,就返回x,用递归的形式,return gcd(y,x%y);C 给定一个数组,找到任意一个数组满足xi=ai和ai-1的取模,xi的下标是从2开始的。x的范围并不是很大,只有五百。B /判断a有多少时在b里面的 a[i]等于b[i] i就++,不然就移动j,这是经典的双指针问题;A:需要求gcd(x,y)+y的最大值,给的范围只有1-1000,可以直接暴力来做。原创 2024-05-03 21:34:40 · 313 阅读 · 0 评论 -
【蓝桥备赛】双指针
双指针在算法中也是经常会用到的,比如原地交换数组中的元素就可以用双指针来做,但是有的时候可能看不出来是双指针的思想。对于一对数字可以用pair类型,cnt表示类型的次数,bool数组表示当前是否符合大于等于k的条件。原创 2024-03-04 21:14:21 · 370 阅读 · 0 评论 -
【蓝桥备赛】字串简写
才用动态规划的思想,dp[i]以i开头的的可能性,因为长度必须大于等于k,当i小于k的时候,如果等于第一个字符,s1时,dp[i]=dp[i-1]+1,如果不等于dp[i]=dp[i-1];当i大于k-1时,如果以第二个字符结尾的,ans就需要加上dp[i-k+1]数据范围 字符串的长度为5*10的五次方,on方时间复杂度会很大。原创 2024-02-24 20:56:10 · 479 阅读 · 0 评论 -
【蓝桥备赛】斐波拉契数列数据范围分析
斐波拉契数列可以有两种求解方式,一个是上往下,可以用递归的方式。n的范围是1-10九次方,可以先将数列存储起来。先将数列存储起来,再通过map来解决。这道题目需要将n分解为三个数字之和。一个是从下网上,是动态规划的思想。这个时候已经超过long的范围了。还需要关注的是斐波拉契数列的范围。n=45的时候斐波拉契数列的范围。上面是求斐波拉契数列的求解方式。n=30的时候斐波拉契数列如下。原创 2024-02-24 12:36:22 · 497 阅读 · 0 评论 -
【蓝桥备赛】并查集
【代码】【蓝桥备赛】并查集。原创 2024-02-24 11:49:12 · 401 阅读 · 0 评论 -
【蓝桥备赛】搜索回溯
dfs的每一层就是对应的孩子,两份对应的糖果。可以全是第一堆糖果也可以全是第二堆糖果,但是必须是2-5之间的数目。2.数据量,如果数据量是1-100的,题目没有读出是dfs的,可以往dfs考虑,因为dfs数据量一般是不会很大的。1.如果是选和不选,每个都有几种可能性,就是对应几插树,几个人就是对应是几层。蓝桥杯考的回溯和搜索算法很多,如何看出来这是用回溯呢?七个小朋友,每个小朋友都有多种可能,2-5个糖果,相当于一个七插树。只有5*5的数组,下面的结果来自上面,每组都只有三种可能性。原创 2024-02-15 14:43:06 · 443 阅读 · 0 评论 -
2024牛客寒假算法基础集训营1
2024牛客寒假算法基础集训营1原创 2024-02-02 22:30:48 · 1213 阅读 · 0 评论 -
【蓝桥备赛】优先队列
/ 定义一个最大堆(默认)// 定义一个最小堆。原创 2024-02-02 12:53:21 · 612 阅读 · 0 评论 -
【蓝桥备赛】蓝桥王国Dijkstra
最短路径Dijkstra算法,用来求不含负值得最短路径得算法。因为参加蓝桥杯报名得是Java组,题目会采用两种代码风格来编写。这道蓝桥王国就是模板题。原创 2024-02-02 00:39:21 · 921 阅读 · 0 评论 -
蓝桥杯--数的拆分
只要求出1e18开五次根号下面的是所有素数即可,大概400多,如果一个数字分解质因数,只出现了一次,输出no,因为此时不符合y2和y1都大于等于2的条件。当质因数分解完之后,需要判断n是否为平方数或者立方数即可,因为前面的质因数分解都是符合条件的,当一共数在n出现x次,那么肯定能拆分为2。b的形式,所以不管前面有多少组质因数,只要是符合条件的最后指数一定会是y1=2,y2=3的形式。n的范围是1e18次方,暴力绝对是行不通的,不能用暴力来解决。蓝桥杯省赛 数的拆分,应该是一道数论的题目。原创 2023-12-12 17:56:45 · 602 阅读 · 0 评论 -
巧用正则表达式
表示以什么开头的,^表示以abc开头的。那如何确定是否都是字母呢a-f呢?原创 2023-10-15 18:27:16 · 140 阅读 · 0 评论 -
冲刺十五届蓝桥杯P0006平面切分
本道题要考虑全面,对计算几何需要全面的了解。原创 2023-10-15 15:22:04 · 565 阅读 · 0 评论 -
冲刺十五届蓝桥杯P0005单词分析
统计字符串中字母出现的次数,可以采用哈希表,代码采用的是数组来存储字符,将字符-97,得到对应的数组下标,将对应下标的数组++;找到数组元素最大的下标,然后打印出来即可。原创 2023-10-15 14:34:04 · 453 阅读 · 0 评论 -
冲刺十五届蓝桥杯P0004递增三元组
用到线性代数的知识,原来的三元组一共有27钟组合,不一一列举了。如果将三元组排序一下,得到的27钟组合和原来时一样的,只是顺序变了而已。我们以b组为核心,遍历b组元素,找到a中小于b[i]的元素个数,再找到c组中大于b[i]的元素个数,其实容易看出来这就是一个。二分查找通常和其他模板结合在一起使用,求最小值的最大值可以或者最大值的最小值可以采用二分的方法。,查找a用的时右查找,查找c用的时左查找。原创 2023-10-08 12:21:03 · 109 阅读 · 0 评论 -
冲刺第十五届蓝桥杯P0003倍数问题
需要找出三个数字,三个数字之和是k的倍数,并且这个数字需要最大,很容易想到的就是将数组进行倒叙排序,然后三层for循环解决问题,但是这样会导致**时间复杂度很高。**必须进行剪枝优化,因为已经排序了,定义最大值为ans,如果在第二层for时,arr[i]+arr[j]+arr[j+1]原创 2023-10-08 11:52:23 · 325 阅读 · 0 评论 -
冲刺十五届蓝桥杯P0002 日期统计
1.子序列(subsequence)是指原始序列中按照相同顺序选择零个或多个元素而形成的序列。连续子序列(subarray)是指原始序列中相邻位置的元素构成的子序列。2.其实这道题一看就是用暴力的方法求解。首先子序列前4为是2023,并且2023为平年,不用考虑2月的问题。直接模拟即可,将符合的的添加到对应的数组中去,所有的数组都开大了一个,是的下标和月份相对应。本题是需要求子序列,就是说八个数字组成的序列,不一定是连续的。需要明白一些概念,子序列、连续子序列。原创 2023-09-29 16:24:08 · 442 阅读 · 0 评论 -
冲刺十五届蓝桥杯P0001阶乘求和
所以我们可以看题目,需要求解S的末尾九位数字,易知道40的!之后末尾九位都是0,所以不用计算。我们可以知道19的阶乘就已经超过了long的最大值,所以让我们直接计算202320232023!所以只需要计算1-39的阶乘之和即可,因为19的!5才会出现0,而2的数目应该是远大于5的,所以一般只需要考虑5的个数。首先需要知道的一点,n!的末尾想要有0,中间一定是需要2。首先我们需要知道 int 和long的最大值是多少。需要注意的是25和125有多个5,不能遗漏;所以我们需要突破题目的限制,看透问题。原创 2023-09-27 20:50:34 · 2193 阅读 · 2 评论