自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 考研机试贪心算法(二)

背景:必须是「顺序决策问题」—— 结果依赖于元素的排列顺序(比如调度、排队、叠放、路径选择) 先进行证明 相邻顺序的 大小。思想: 先将仓库 位置进行升序排序, 取最小距离 为 res+=abs(a[i] -a[n/2]) 中间位置的绝对值。思想:贪心规则, 按照 s+w的大小从小到大进行排序, 危险系数 = 前i-1个牛的体重和 减去 当i的压力系数。思想: 将打水时间进行从小大到排序, 等待时间累加为res += p[i].t * (n - 1 - i);贪心思想: 就是把仓库建在中间位置。

2026-03-19 12:45:00 138

原创 机试真题(一)

2.筛选不重叠的活动, 将当前的活动的开始时间与上一个活动的结束时间进行对比;如果开始时间>=上一个结束时间,则 没有重叠.(初始化 ,我们定义一个last_time=-1进行存放上一个节点的结束时间)3.利用数据结构 : 定义一个结构体进行 存放活动的信息 ,以及进行<重载 , 定义一个一维数组,进行选中的活动id 记录,1.局部最优,及全局最优;每次选择结束时间最早的,将结束时间进行排序;背景: 在一组时间区间当中,选出尽可能多的不互相重叠的区间活动。

2026-03-19 12:44:56 63

原创 考研机试之递归与贪心算法

核心思想:将大问题分解成多个小问题,特别注意递归的边界结束条件1.跳台阶斐波那契数列:这一级的台阶数和为上一级的台阶数加上 上上级的台阶数。

2026-03-16 15:18:35 417

原创 动态规划之01背包问题

01背包的各种类型:1.注意事项只要问题是 “求最大 / 最小”(比如个数、价值、花费、张数),就用max或min;求 “最大” 用max,初始化 dp 为 0;求 “最小” 用min,初始化 dp 为无穷大(仅 dp [0]=0);求 “有多少种方式”(计数),用加法,初始化 dp [0]=1,和max/min无关。

2026-03-14 10:21:33 424

原创 考研机试动态规划 线性DP

1.如果i>=j(也就是苹果的数量大于盘子数量) 则: 先把每个盘子都放一个苹果 ,然后剩下i-j个苹果在放随便放j个盘子当中 f[i][j] = f[i][j-1] +f[i-j][j];3.状态转移:分两种情况:1.字符匹配相等(dp[i][j] = dp[i-1][j-1]+1;数组f[i][j] 表示 把i个苹果放到j个盘子当中 f[0][0] = 1,表示空拆分,递推的起点。如果 d[i-1]>0 则下一位d[i] = s[i-1] +d[i-1]直接加上其和。

2026-03-13 11:44:45 422

原创 考研机试 Dijkstra算法

求解。

2026-03-12 14:37:48 239

原创 考研机试 -Kruskal算法

利用两次遍历循环,先遍历边数组结构 1.把t==1 的边先合并 2. 在构建一个unbuild数组 ,把t==0的数组合并。将其排序, 利用kruskal算法,求其权重。1. 如果有公共的根节点,则说明成环了 不可,2. 如果并入的边 == 节点个数-1 , 则为最小生成树了,退出循环。题目意思: 输入n个点的坐标 ,求生成最小子树的最短路径,我们手动求解dist。定义Edge 结构体 存放 遍历的节点去向, from to 以及权值。dist[vec[i],vec[j]] 传入的是整个point节点。

2026-03-09 16:34:16 55

原创 计算机机试-图 -并查集

思路:1.利用并查集的基本功能union进行合并树 2.为-1-1 则break 3.如果为0 0 则要么读完一组数据,要么为空树 printf()之后 ,还需重置基本的数据结构 4. 如果是其他的 ,则变数++,节点数组记录是否出现过,如果节点数大于2则不是 如果(其父节点一样则相乘了环,ifFind(u) == Find(v))或者edgeCount!如果并查集合并之后联通,则其根节点为1,如果存在两个联通的根节点为本身, 则存在多个联通分量,并查集的利用 ,每当两个通路合并之后, 其道路数减一。

2026-03-08 19:12:40 172

原创 考研机试bfs相关题目

2.dfs 递归矩阵的时候 要把范围扩大一倍, 扩大一圈的核心优势:“一招通吃,我们给原矩阵(1~n)四周加一行 / 列,形成。思想:1,把非0的元素改为2, 2. 利用dfs把0的元素改为1, 3.剩下的为被包围的元素,改为2,ok。注意事项:1,双重循环 遍历从1-n i= 1开始 数组是从1-n。4.填颜色: 在0 1 矩阵当中 把被1 包围的内部的0改为2。利用bfs进行最短路径遍历,需熟悉bfs的遍历模板。

2026-03-06 16:33:49 34

原创 机试搜索----dfs

思路,主要是探照灯的探索,走马日,由题意只能向右边走,以(0,0)为原点,竖着x轴,水平y轴, 走马日有 (2,1)、 (1,2)(-2,1)、(-1,2)右半边。数据结构:利用二维数组进行迷宫的初始存放:边界条件:1.走出二维数组则continue;重点:dfs模板+add()函数加边的方法(无向图则要加两次) ///利用的链表法的思想。思路:利用dfs的思想,从出发点依次上下左右探索,没有走过的标记为1,走到走过的则后退。这个题目出现的回溯探测的情况,所以有标记现场,也有恢复现场。

2026-03-04 14:20:31 260

原创 考研计试之树(三)

思路: 1.利用priority_queue<int> q的限制,默认为大根堆,我们让其每个输入的值取个负,则大的数值在后面,将两个权重值最小的先相加,然后再压入大根堆(每次压入自动排序了,根大于左,根大于右)中 2.输出,当priority_queue中大小 小于2时则,退出循环,则打印,并且-1*wpl取反。重点:1.要创建初始节点,2,循环遍历左右子树的位置,当其data为空是,说明没有其孩子,则插入,并且返回其父节点pPre。5.哈夫曼树,求其wlp(wlp等于每个最小权重节点的和的之和)

2026-02-27 09:22:31 159

原创 考研机试之树(二)

思想:1.a为后序顺序数组,b为中序遍历数组,我们将利用map容器单位到中序遍历中的根节点,方便划分左右子树 2.构建build函数,边构建边保存前序数组顺序的元素,利用vector数组进行保存前序root的值,建立vector ans 进行动态存储前序遍历的结果。难点:找到后序序列的左子树的右边界:k-bl(计算前面有几个节点),k-bl+al-1 则为在后续序列中其左子树的右边的位置。方法二:找公共祖先节点:(前提条件:二叉树构建的节点值无序)跳台阶法:前提条件知道每个节点的父节点,和该节点的深度。

2026-02-25 21:02:10 220

原创 考研机试之树

2.要知道,以下标m为root,其左孩子为2*m,右孩子为2*m+1,下一层的节点数为上一层的两倍,level*=2;2.初始化二叉树, 每次都需要将各个数组初始化一下,完成左数组和右数组存放,以及确定好各个数的前驱父子节点。1.确定目标下标为root节点,则以这一层为level = 1 ,res = 1(节点数)1.建立一个char类型数组,进行存放输入的字符串,先构建二叉树,构建完之后,进行中序遍历。先将前序的左子树子串和中序的右子树子串输入,进行先建树,然后,后序输出。有m节点的子树下有几个节点。

2026-02-14 23:25:52 269

原创 考研机试day14

1.建立两个栈,一个存放操作符,一个存放数字,我们引入两个哨兵符号,操作符哨兵为#栈底哨兵,防止空访问栈;$为数字栈的栈顶哨兵,扫描到着标志着,结束,触发剩余运算符进行运算。3. 判断操作符压栈的情况,如果扫描的操作符的优先级高于栈顶的,则入栈,否则,弹出操作符栈顶,进行加减乘除运算 ///出现加减乘除,则统一使用double类型。4.如果value值>0,则对其进行匹配,匹配成功,则把栈顶元素出栈。2.注意有两位及其以上的数字,也是要进行计算压入栈的//特殊情况。3,将左括号压入栈中。

2026-02-12 10:59:23 148

原创 Vscode使用uv配置虚拟环境的步骤以及常见的坑

基本流程:初始化项目(创建文件夹) → 创建虚拟环境 → 激活环境 → 安装依赖 → 绑定 VSCode 解释器。

2026-02-10 15:49:41 1251

原创 约瑟夫问题No.2

3.边界条件,当一维数组大小为n时退出遍历;退出条件:从队首开始i=1,如果i%m==0则报数到m了,将其队首元素插入数组中,并且出队,如果未满足条件,则把其插入队尾。2.实现流程:由题意是从编号p开始报1-m号,那么队首元素为p,初始化队列,p,p+1,p+2....n,1,2,3..p为这个样子。1.先确定数据结构,用一维数组存储出去的值,用队列进行报数,先进先出。

2026-02-09 15:46:48 153

原创 考研机试字符串day12

注意:定义了结构体,一定要给其进行结构体命名:方法:在结构体后面命名,或者在main函数中命名 student stu。1.判断是否为单词的条件 如果前一个字符为空格,数字,其他符号,则下一个字符开始为另外一个单词。isspace()//帮你快速识别空格、换行、制表符这些看不见的 “分隔符”cin.getline(变量名,长度) 读取一行字符串输入,直至\n。2.找出现最多次数的字符,利用map容器,找到出现最大字符的first。isalpha() //判断是否是否在26字母表中,不管大小写。

2026-02-09 14:37:24 202

原创 机试11day

思路:把输入的数字分成三部分:左边、、中间、、右边、、3.二分查找 先要保证序列有序 先sort排序。总结map容器的使用。

2026-02-07 20:42:24 232

原创 map容器的使用方法的总结

map是键值对的关联容器 key ->>value ,<map><map>1.下标法map[key] = value//直接赋值法2.insert()插入法 要使用pair 推荐使用make_pair()3.emplace插入法,效率高于insert。

2026-02-06 12:54:39 609

原创 机试day9/10

2.while多次输入,由题意,如果连续输入相同的字符,说明在同一个键位置,停顿一段时间,lastkey标记上一个打印的键盘位置2。对于multimap不支持[ ]运算符 采用lower_bound(key) 返回key对于的第一个值的位置begin()unordered_map 无序 不有序重复 ,经常使用,时间开销小 键值不可重复,唯一,value可重复。map.(find(元素)==map.end()) //不存在。可以通过下标访问元素, 下标可为任意类型,被访问的元素也可为任意。

2026-02-06 10:22:12 903

原创 考研机试day8

思路:0-l的树,则共有l+1棵树,把区间内的砍去的树标记为1,用区间内的总树减去标记的和,则为剩下的树。思路 : 1,先建立两个动态数组,遍历判断是否为完数 ,用push_back存入,2.用迭代器遍历数组。随机位置插入, 先用迭代器查到待插入位置 用insert()函数 ,insert(指针,元素)2.判断是否相等, 我们拿出第一个同学的糖果,与后面的学生进行比较,只要有一个不相等,则不平衡。4.迭代器 iterator 提供一种通用方法,理解为高级版的指针 ,可以获取数组元素的位置。

2026-02-04 00:27:29 359

原创 机试day7

sscanf(str(字符串名字),"%d%d(对应的类型)",&变量名) 这个函数对字符串进行输入。判断闰年 year%400==0||year%4==0&&year%100!调用函数修改主函数值采用&是赋值,其他地方使用&则为取地址。思想:把输入的两个数据转换成天,统一单位为天,方便计算。c++中的引用&符号。

2026-02-02 23:21:22 348

原创 机试代码day6

思路:1.把输入字符串str看着字符数组,定义一个二维数组进行复制为str[k++],1.叠框 思路利用二维数组从图形中心点往外打印,打印层数为n/2。3.打印顺序,先左上到左下,下水平,右下到右上,注意边界条件。2.helloe world U形。2.先将二维数组赋值为“ ”

2026-02-01 23:03:13 185

原创 复试day4

这个算法:判断两个矩阵相等,如果不相等,则将一个矩阵旋转90度,一共有90,180,270,360度,利用for循环遍历三次,每次都进行判断矩阵是否相等。学会vector,容器的arr.resize(n,vector<int>(n) 定义矩阵大小。2.旋转矩阵,判断两个矩阵是否为旋转之后的矩阵。利用表格法,列出每一行的空格数和填空数上。

2026-01-30 00:20:51 137

原创 准备复试机试day2

重点,对递推数列进行取模,防止溢出,递推数列数值指数级增长,每一步取模能把数值限制在 MOD 范围内(通常 MOD 是 1e9+7,刚好在 int/long long 范围内),避免变量存储不下;:我们最终需要的只是「结果对 MOD 的余数」,而非原始大数 —— 算法题要求输出余数,所以保留余数信息就足够,原始大数的大小毫无意义。重点,1.将输入int类型的数字,转换位字符串, 2.字符串中字符数组中存放的是字符,进行相乘要将字符转换为数字,ascll码进行转换。简单说:你觉得的 “变小” 是。

2026-01-28 00:03:03 353

原创 Python序列中的函数使用

sorted()返回的是一个全新的列表,与原来的不会影响,但调用的是sort的方法 ,s则会发生改变。但涉及多个以上的元素zip时,每个元素的长度不一致时,zip函数会取最短的元素进行组合。reversed(s) 则返回的是一个特殊的地址 ,需要通过list()函数进行解压。其中enumerate()函数中有一个start参数,可设置序号的开始值。在sum()函数中,可设置start起点进行开始加迭代对象的元素。len()函数求字符串的长度;all()函数判断可迭代元素中是否所以的元素为真。

2024-02-25 10:00:00 411

原创 Python中字符串的使用(四)

以 x = "我爱Python"为例子。返回值为True // False。x.startwith("我")

2024-02-24 08:00:00 383

原创 Python的字符串的使用(二)

'000000000000000000000000有内鬼,停止交易!' 有内鬼,停止交易!以 x = "有内鬼,停止交易!' 有内鬼,停止交易!以 x ="上海的水来自海上”为例子。'有内鬼,停止交易!x.find("海")

2024-02-23 08:00:00 572 1

原创 Python的字符串的使用(一)

以 x = "I love you" 为例子。

2024-02-22 16:00:00 573 1

原创 Python列表的推导式

4. 列表的推导式的多层条件筛选 [expression for target1 in iterable1 if conditions1 for targegts2 in iterable2 if conditions2......]digete = [matrix[i][i] for i in len(matri)] //表达式为主对角线的元素。浅拷贝 ———— 列表名.copy() OR y = copy.copy(x)深拷贝 先引入 import copy //copy的库。

2024-02-21 08:00:00 537

原创 Python自学之列表中的增删改查

3.列表名.index(元素) 也有 列表名.insert(index(插入元素前一个),插入元素) \\索引元素的下标。2.列表名.extend([元素1,元素2.....]) \\在列表末尾添加多少个元素。3.列表吗[元素1: 元素2: x] \\查找元素1到元素2 跨x个元素进行查找。4.列表名.insert(len(列表名),元素) \\从列表末尾插入。2.列表名[元素1:元素x] \\查找从元素1 到元素x 之间的所有元素。1.列表名[被替代元素的下标] = "替代元素 "

2024-02-20 09:00:00 383 1

空空如也

空空如也

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

TA关注的人

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