- 博客(17)
- 收藏
- 关注
原创 十五届蓝桥杯比赛总结
断断续续准备了快4个月,但是感觉刷题量还是少了,很多题一看知道用那些算法、数据结构解题,但是就是没思路写不出来。还有那题有“诗韵”的数列,刚开始没多想,直接用dfs暴力写了,花了40分钟,后来构造测试数据的时候发现思路想错了,只能过给的案例。一共写出来了2题填空,1~2题大题,剩下的都是能暴力就暴力,实在不会的我就直接打印测试用例,不知道能不能骗点分。那题仓库统计商品数量为0的题,应该可以用线段树+二分来写的,但是不是很记得线段树的操作。,加上只剩下半小时了,就没多想,直接用for模拟了,应该能拿点分吧。
2024-04-13 14:37:38
195
1
原创 线段树简介
是一个二叉树,用于求出数组中一段数的和(前缀和)、给某个位置的数加上一个数、求一段区间的最大值支持的操作:单点修改、区间查询时间复杂度:修改和查询都是Olognpushup(u):用子节点的信息来更新当前节点信息build(u, l, r):在一段区间上初始化线段树, u表示根结点,l表示左边界,r表示右边界modify(u, l, r):单点修改, u当前节点的编号,x要修改的位置,v要修改的值。
2024-03-18 19:05:52
1119
原创 归并排序和快速排序
开一个临时数组tmp,指针i指向数组p,指针j指向数组q,比较p[i]和q[j],谁小就把元素放到数据tmp(从小到大排序),然后指针向后移,继续比较…2、调整区间,以L[l]为基准,使得所有=L[l]的元素都在L[l]的右边。1、随机确定分界点,比如:L[l]、L[(l+r)/2]、L[r]1.将数组分割为2个局部数组,每个数组长度为n/2。基于分治法,需要递归,每次递归时需要找一个枢轴。快速排序是不稳定排序算法。归并排序是稳定排序算法。
2024-03-15 17:33:07
363
1
原创 一维前缀和和二维前缀和
黄色部分面积=蓝色部分面积s[3][3]-橙色部分面积s[3][1]-粉色部分面积s[1][3]+灰色部分面积s[1][1] (灰色部分被减了两次所以要加回来)二维前缀和数组[2][2] = 17,它是原二维数组左上角(1,1)到右下角(2,2)所有数的和。等于原数组中蓝色部分+紫色部分-黄色部分+灰色部分。由容斥原理计算二维前缀和数组s[2][3]紫色部分=前缀和数组s[1][3]的值。蓝色部分=前缀和数组s[2][2]的值。黄色部分=前缀和数组s[1][2]的值。灰色部分=原数组a[2][3]的值。
2024-03-10 21:02:51
1858
1
原创 spfa算法
把1号点加入到队列(对列里边存的是所有距离变小了的节点编号)SPFA只要不是负环就能用,一般用于求单源最短路问题。该算法是对Bellman-Ford优化。时间复杂度:O(m)2.遍历t的所有出边。
2023-12-22 11:01:12
407
原创 朴素版Dijkstra和堆优化版Dijkstra算法
1号点的距离初始化为零,其他点初始化成无穷大:dist[1]=0 dist[other]=+∞。遍历dist数组 找到一个没有确定最短路径的点state[j]=false,且该点距离源点最近。循环:每次循环都能确定一个点的最短距离,循环n次,求出每一个点到起点的最短距离。初始化state数组(state数组保存所有点的 已确定的最短距离)判断从1走到x和从1走到t再走到x的距离,如果比较短,就更新x的距离。朴素版中,每次循环都要遍历dist数组,找到距离源点最近的点t。用t更新他指向的其他点x的距离。
2023-12-22 10:32:03
2020
原创 3 算法的复杂度
忽略常数项,只保留最高阶的项,且系数变为1,最终时间复杂度:S(n)=O(n)空间复杂度用S(n)表示 S(space) eg.S(n)=O(n)算法时间开销T(n)与问题规模n的关系(T表示“time”)②分析该基本操作的执行次数x与问题规模n的关系x=f(n)所以时间复杂度为:S(n)=O(4)+O(4n)+O(4)③x的数量级O(x)就是算法时间复杂度T(n)③x的数量级O(x)就是算法空间复杂度S(n)②x的数量级O(x)就是算法空间复杂度S(n)记作:T(n)=O(f(n)) 叫做大O记法。
2023-11-29 10:29:39
66
1
原创 1 数据结构简介和分类
定义按照一定规则,操作元素的,集合作用描述在计算机中数据元素的排列方式,强调数据元素之间的关系,是数据的逻辑结构基本术语数据:可以输入到计算机中,能被计算机程序处理的符号 数字、字符、声音、图像等数据对象:具有相同性质的数据元素的集合,是数据的子集数据元素:组成数据的基本单位,在计算机中作为整体处理,一个数据元素由若干个数据项组成例如:在人类中,组成人类的数据元素是人数据项:数据项是数据不可分割的最小单位例如:数据元素人,有年龄,名字,性别这些数据项。
2023-11-29 10:20:09
78
1
原创 动态规划求最长路径 蓝桥杯 p505
顶层到i,j(第i层j结点)的最大路径 = i-1层j结点的路径 与 i-1层j结点的路径 的最大值 + 当前结点的路径值。那我们就定义dp[i][j]的含义为:从第1层走到(i, j) 这个位置时,此时的最大路径为 dp[i][j]。由方程dp[i][j] = max(dp[i-1][j], dp[i-1][j-1])+dp[i][j]可知,当i=0 或 j=0 时,i-1=-1,j-1=-1 数组越界了,所以当i=0或j=0时是不能带入上式求解的。上图给出了一个数字三角形。
2023-10-31 22:56:07
464
1
原创 题目 3180: 蓝桥杯2023年第十四届省赛真题-棋盘
每次操作会将棋盘上某个范围内的所有棋子的颜色取反 (也就是白色棋子变为黑色,黑色棋子变为白色)。小蓝拥有 n × n 大小的棋盘,一开始棋盘上全都是白子。小蓝进行了 m 次操作,请输出所有操作做完后棋盘上每个棋子的颜色。,优化一下输入输出,能过全部案例。1、两重循环,时间复杂度是。
2023-10-22 21:15:43
656
4
原创 蓝桥杯P3179——平均
小明发现数组里每种数出现的次数不太平均,而更改第 i 个数的代价为bi,他想更改若干个数的值使得这 10 种数出现的次数相等(都等于n/10),请问代价和最少为多少。使用循环,优先更改权值较低的数,并将更改那个数的权值相加,循环次数= 出现相等的次数 - 该数的出现次数。改若干个数的值,使给出的数,出现的次数相等(都等于n/10),求更改的这些数需要的最少代价和。遍历数组,找到一个数的出现次数 > 出现相等的次数时,则表示要更改这个数。统计每个数出现的次数,用数组保存起来。读入每个数 和 它的权值。
2023-10-18 22:01:45
637
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人