- 博客(31)
- 收藏
- 关注
原创 第三章 图论(单源最短路的综合应用)
1.对于答案x,需要满足的性质就是从1走到n需要经过大于x的边数小于等于k,作为分界点,此时大于xx的边数应该等于k。2.对于答案右边的区间,x变大了,大于x的边数就会减小,即大于x的边数小于k,同样满足性质;2.对于答案左边的区间,x变小了,大于x的边数就会增加,即大于x的边数大于k,不满足性质。时,由于不是拓扑图,状态的更新可能存在环,因此不能使用动态规划,只能使用求最短路的方式。= 10,则有可能存在 6 的价格是11, 但 7 的价格是3,那么。从 1 走到 i 的过程中,买入水晶球的最低价格。
2022-10-03 15:16:22
386
原创 第二章 搜索(迭代加深 双向DFS IDA*)
双向dfs的思路在于将要搜索的区域一分为二,前一部分暴力枚举将每一种情况存储下来,后一部分对于枚举出的每一个值,通过二分的方式将其与第一部分的dfs相匹配,若满足题意,则更新最大值。迭代加深的模板题,相较于普通的dfs,迭代加深在每次搜索时给定了一个范围上限,若每次在搜索时超出了这个范围上限,那么就会返回false然后允许搜索的深度加1。是每次移动一段序列所能修复节点的最小操作数,每次最多可以修复三个节点,所以需要进行的操作数=待修复节点/ 3上取整。算法的结合版:一方面。
2022-09-24 10:44:54
860
原创 第二章 搜索 (DFS之剪枝顺序与优化)
本道题在常规的dfs上多添加了一个剪枝的操作:dfs的参数中枚举的是第几个小猫,dfs内部的循环枚举的是当前用到了第几辆车,最优性剪枝是cnt>=res,优化搜索顺序是先将a数组从大到小排序,优先搜索大的数。本题非常的麻烦和复杂,代码全程高能,具体见注释。本道题的剪枝思路也是异常的复杂,详见。是四道题目里剪枝最复杂的一题,详见。
2022-09-23 14:15:51
479
原创 第二章 搜索(DFS之连通性模型,搜索顺序)
因为本题中dfs是为了搜索时候能到达最重点,若一个不可到达最终点,那么也就没有回溯的必要了,所以每个点只会被遍历一次。数组,用于存储编号i为龙头,编号j为龙尾时重合部分的长度。而dfs部分则没有什么难度,注意好字符串拼接即可。而且本题在遍历到一个点的时候,需要对它立刻进行标记,并且在函数快要结束时,恢复现场。本体需要注意的是在恢复现场的过程中需要回溯的时候,本题通过分组按顺序的方式来枚举每一个方案将。,若能,这插入,若不能则新开一个组。一道简单的DFS连通性模型的问题,本道题的解题关键在于。
2022-09-21 08:45:38
361
原创 第二章 搜索(Flood Fill,最短路模型,多源BFS)
也是经典的flood fill算法问题,只不过稍微增加了一层包装,关键在于每个数字的意义是什么,具体解释见下图。相比于前面几题,本题的特点是需要输出最短路的路径,因此,在bfs的过程中,需要。我们可以将所有值为1的点初始化为起点,易得最小值为0,同时我们虚拟出一个。,用于记录从起点到达当前位置的距离,其余的都是广搜的模板。还是flood fill的基本模型,问题转换为,,最后按顺序输出即可。,这样最后按序输出的pre数组即为答案。上的bfs,会出现三个方向的状态偏移。,源点到达各起点的距离为-1。
2022-09-15 16:47:11
226
原创 最小生成树和二分图
关于最小生成树的prim算法和kruskal算法的b站优质视频讲解链接prim 算法干的事情是:给定一个无向图,在图中选择若干条边把图的所有节点连起来。要求边长之和最小。在图论中,叫做求最小生成树。prim 算法采用的是一种贪心的策略。每次将离连通部分的最近的点和点对应的边加入的连通部分,连通部分逐渐扩大,最后将整个图连通起来,并且边长之和最小。2 Kruskal2.1 Kruskal算法求最小生成树问题描述3 染色法判定二分图3.1 染色法判定二分图问题描述4.匈牙利算法4.1 二
2022-07-01 20:23:11
198
原创 最短路问题
朴素版dijkstra是稠密图,建图时采用邻接矩阵。关于迪杰斯特拉算法,只需能理解运行过程即可,不需要掌握原理1.2Dijkstra求最短路 II问题描述本道题解决的是稀疏图的迪杰斯特拉算法,采用邻接表来建稀疏图,其他具体的见注释2.bellman-ford2.1有边数限制的最短路问题描述关于bellman_ford算法:Bellman - ford 算法是求含负权图的单源最短路径的一种算法,效率较低,代码难度较小。其原理为连续进行松弛,在每次松弛时把每条边都更新一下,若在 n-1 次松弛后
2022-06-30 18:37:52
163
原创 树与图的深度和广度优先遍历以及拓扑序列
本题可以采用图的深度优先遍历DFS去求解,对于树上的每一个点,都可以通过深度优先遍历在遍历过程中求得每个点的子树的点数,max出其中最大值即可。同时对于树上每一个点,他的父亲的那一快,可以通过总的点数-该节点的子树的点数和-1求得。2.树与图的广度优先遍历2.1图中点的层次题目描述这道题就是典型的套用BFS模板然后广度优先遍历图的问题,求出始点到终点的最短距离......
2022-06-28 22:31:18
435
原创 Liunx下的Tmux安装
网上有些教程乱七八糟的,其实一条命令就够了若是 Ubuntu Linux 可用 apt 安裝 tmux:# Ubuntu Linux 安裝 tmuxsudo apt install tmux若为centos版本 可以用yum安装tmux:# CentOS Linux 安裝 tmuxsudo yum install tmux安装完成之后,即可使用tmux# 执行 tmuxtmux...
2022-05-19 16:09:27
308
原创 关于LCS输出最长序列的问题
题目来源于atcoder解题思路参考这篇文章问题描述题意:其实就是LCS的一个变形,在LCS的基础上,需要输出这个最长的公共子序列(得先完全理解了LCS的做法后才能来做这道题)这个我本来想的是用一个二维string数组记录每个状态的最长公共子序列是什么,但是怎么写都是超内存的,所以我直接去找题解了O(∩_∩)O看了下网上大佬的思路:用了一个flag数组来代表每个状态是从哪个状态转移过来的。对于当前状态f[i][j],一共可能从三种状态转移过来(状态转移方程的推导这里我就不写了,已经写了好多遍
2022-05-01 15:00:12
201
原创 线性DP学习笔记
文章目录前言序列模型最长上升子序列最长公共子序列最长上升公共子序列字符串编辑模型编辑距离最短编辑距离求和模型糖果(序列相关)摘花生(矩阵相关)前言线性dp,是较常见的一类动态规划问题,其是在线性结构上进行状态转移,这类问题不像背包问题、区间DP等有固定的模板。线性动态规划的目标函数为特定变量的线性函数,约束是这些变量的线性不等式或等式,目的是求目标函数的最大值或最小值。因此,除了少量问题(如:LIS、LCS、LCIS等)有固定的模板外,大部分都要根据实际问题来推导得出答案。我总结了几种比较普遍的线
2022-04-24 17:27:17
852
原创 第4章 存储管理
文章目录4.1存储器的工作原理4.1.1存储器层次4.1.2地址转换与存储保护4.2连续存储管理4.2.1固定分区存储管理4.2.2可变分区存储管理4.2.3内存不足的存储管理技术4.3分页式存储管理4.3.1分页存储管理基本原则4.3.2翻译快表4.3.3分页存储空间分配和去配4.3.4分页存储空间页面共享和保护4.3.5多级页表4.3.6反置页表4.4分段存储管理4.4.1程序分段结构4.4.2分段式存储管理基本原理4.4.3分段存储管理共享和保护4.4.4分段和分页比较4.5虚拟存储管理4.5.1虚拟
2022-04-04 17:14:10
2953
2
原创 操作系统 第4章 习题整理
文章目录动态分区分配算法虚拟存储器中的页面置换算法动态分区分配算法例题在可变分区存储管理下,按地址排列的内存空闲区为:10KB、4KB、20KB、18KB、7KB、9KB、12KB 和 15KB。对于下列连续存储区的请求:12KB、10KB、15KB、18KB.试问:使用首次适应算法、最佳适应算法、最差适应算法和下次适应算法,哪个空闲区将被使用?解题过程:首次适应算法:解析:首先,按照分区号开始,从上至下开始查找,遇到第一个满足连续存储区要求的分区,就去占用。对于往后的每一个连续存储区都
2022-04-03 18:50:15
12350
原创 蓝桥杯算法笔记总结
文章目录1.枚举2.二分3.贪心4.搜索(DFS,BFS)⭐⭐⭐5.动态规划(DP)⭐⭐5.1背包模型5.2线性DP6.补充知识点6.1前缀和⭐⭐以下按照考试时想算法的思路来罗列相关之点,按以下顺序来想算法,从枚举到DP,如果最后的DP,状态转移方程也写不出来,那就直接下一题了,下一题也做不出来,那就寄!(doge)1.枚举2.二分3.贪心4.搜索(DFS,BFS)⭐⭐⭐5.动态规划(DP)⭐⭐5.1背包模型5.2线性DP6.补充知识点6.1前缀和⭐⭐...
2022-03-21 13:26:32
4267
2
原创 操作系统第2章 习题整理
文章目录概念题作业调度和低级调度算法(重点题型)⭐关于作业调度算法问题的总结概念题答案:(3)设时钟日期,(4)加载psw,(5)置特殊寄存器,(6)改变存储器映像图,(7)启动I/O指令解析:1.读取时钟日期,应用程序可以读取;2.访管指令,操作系统分析访管指令中的参数,然后让相应的“系统调用”子程序为用户服务。系统调用功能完成后,操作系统把中央处理器的管态改为目态,并返回到用户程序。3.设置时钟日期,设时钟日期,加载psw,置特殊寄存器,改变存储器映像图,启动I/o指令。用户态不能进行。拓
2022-03-20 16:33:35
5565
原创 第2章 处理器管理
2.1处理器状态2.1.1处理器1.指令系统:每台计算机的机器指令集合称为指令系统2.寄存器:为了实现指令功能,处理齐中设置了一组寄存器用作寻址或存放数据,变量和中间结果,个数根据处理器型号不同而异。3.特权指令:仅在内核态下才能使用的指令,这些指令涉及改变机器状态,修改寄存器内容,启动设备I/O等,执行这些指令不仅影响运行程序自身,而且干扰其他程序及操作系统,因此只有操作系统有权调用4.非特权指令:在目态和管态下都能工作。操作系统程序能够执行全部机器指令,而应用程序只能使用非特权指令。如果应用程
2022-03-17 18:56:32
1606
2
原创 第一章:操作系统概论
文章目录1.1操作系统概观1.1.1操作系统与计算机系统1.1.2操作系统资源管理技术1.1.3操作系统定义和作用1.1.4操作系统功能和特性1.2操作系统形成与发展1.2.1人工操作系统阶段1.2.2执行系统阶段1.2.3多道程序设计与操作系统的形成1.2.4操作系统的发展与分类1.3操作系统的基本服务和用户接口1.3.1基本服务和用户接口1.3.1程序接口与系统调用1.3.1操作接口与系统程序1.3.1Linux系统调用及实现机制1.4操作系统结构和运行模型1.4.1操作系统结构分类1.4.2操作系统结
2022-03-16 11:38:35
4085
原创 深度优先搜索DFS总结
1.前言本篇文章是为了准备蓝桥杯而去写的一篇深度优先搜索DFS的笔记,包括知识点,模板,和例题。2.DFS简介3.DFS模板4.相关例题5.总结
2022-01-27 20:59:27
427
原创 蓝桥杯集训第一周刷题笔记(1.17-1.21)
1.生日蛋糕(深搜+剪枝)1.1题目描述1.2输入输出样例1.3解题思路深度优先搜索,从最底层向上层搜索,每一层枚举可能的半径和高度,判断是否合法,合法则继续搜索上一层。需要剪枝的情况:上层最小体积+目前体积>目标体积上层最小侧面积+目前面积>现有答案剩下的侧面积+目前面积>现有答案1.4源代码#include<bits/stdc++.h>#define maxm 30using namespace std;int n,m,mins[maxm],m
2022-01-23 18:31:25
490
1
原创 蓝桥杯2014年第五届真题-地宫取宝(DFS+动态规划)
1.题目描述2.输入输出样例3.解题思路很明显,这是一个dfs进行暴力搜索的题,但只使用DFS很容易超时,所以要进行剪枝,即为记忆化搜索。同时,定义状态dp[x][y][num][maxv]。这代表第x行第y列,此时的获得了num个宝物,宝物中的最大价值为maxv。状态为1表示一种方案,状态为0表示不是一种方案。4.源代码#include<bits/stdc++.h>#define N 1000000007 using namespace std;int n,m,k;int m
2022-01-12 15:55:48
196
原创 蓝桥杯2013年第四届真题——危险系数(图论中的DFS)
1.题目描述2.输入输出样例3.解题思路很明显的DFS搜索图的问题,采用邻接矩阵建图。这里最关键的是怎么去搜索,我这里采用的搜索方法是搜索出所有路径,每搜索出一条路径ans++。同时,对应的这条路径上的每个点都相应的+1。最后DFS搜索完成后,如果对应的b[搜索过的点下标]==ans,就说明该点是每一条路径都要经过的点,即为关键点。最后统计出这样的点有多少个即可。(注意剪枝)4.源代码#include<bits/stdc++.h>using namespace std;#def
2021-11-30 20:30:53
325
原创 蓝桥杯2014年第三届真题——剪格子(DFS非完全正确解法)
1.题目描述2.输入输出及样例3.解题思路本道题就是经典的DFS算法问题,从左上角最顶格开始,不停地向周围深搜,直到满足sum/2为止,并记录下步数,每进行一次深搜就比较一下步数,将最小的步数记录下来。注意设置一个vis[],记录在一次DFS中被访问过的格子。这题用DFS最大的漏洞在于,会出现如下图的T型剪法,由于DFS的特性是一笔画构成的路径,所以像这种T型剪法能满足要求但是DFS无法探索出。但是由于蓝桥的后台测试数据很水,所以用这种解法居然可以被完全AC。至于正确的解法,我这种小菜鸡不知道怎
2021-11-30 18:41:34
300
原创 蓝桥杯历届试题——九宫重排(双向BFS)
1.题目描述2.输入输出及样例3.解题思路采用双向BFS,在刚开始传入参数时,将初态的dirmat设置为1,终态的dirmat设置为2。cntmat代表的是矩阵x累计所花费的步数。dirmat代表的是矩阵x的BFS方向(1代表正向,2代表反向)进入while循环后,不断的取队首元素,并在四个方向进行nextmat。对每一次nextmat的结果进行判断,如果下一个矩阵可行并且在当前方向上没有被访问过,则进入下一个判断:若正向与逆向相遇,则直接返回答案。否则,sucmat矩阵入队,同时该矩阵的
2021-11-29 20:17:59
655
原创 蓝桥杯2014年第五届省赛真题——兰顿蚂蚁(模拟)
1.题目描述2.输入输出及样例3.解题思路这是一道模拟题,注意好两个状态即可:一个是蚂蚁当前的朝向,一个是当前所在格子的颜色。而蚂蚁的朝向除了初始时的朝向外,是由当前蚂蚁的格子的颜色决定的。所以重点关注当前格子的颜色。根据当前各自颜色,进行转向的调整以及前进。另外,要注意一点,每次要在蚂蚁移动之前,改变格子颜色(但是移动还是按照原格子颜色来)4.源代码#include<bits/stdc++.h>using namespace std;int m,n;int x,y,k;c
2021-11-23 22:10:23
163
原创 蓝桥杯2013年国赛A组——网络寻路(DFS和中转边巧解)
蓝桥杯2013年国赛A组——网络寻路1.题目描述2.输入输出3.样例输入和输出4.题目分析1.首先明确,题目中的目的地有两种,一种是回到原点,一种是到达没有到达的地方2.在路径中经过的点不能有重复的点3.有题目可知,4 1 2 3和3 2 1 4是两条不同的路径4.给出题目中样例的图示5.解题思路思路一:DFS暴力求解1.使用vis[]数组记录经过的点;2.使用DFS寻找可能的路径,因为路径的长度是4,那么当寻找路径上的前3个点的时候,如果可以从前一个点走到当前的点,并且当前
2021-11-15 22:16:36
2062
3
原创 蓝桥杯2014年第五届真题——斐波那契(矩阵快速幂)
蓝桥杯2014年第五届真题——斐波那契(矩阵快速幂)1.题目描述2.输入输出3.样例输入输出4.解题思路思路一:暴力求解最常规的思路,一看到斐波那契数列就用递归去写,因此可以写一个斐波那契的函数,然后调用函数来写#include<bits/stdc++.h>using namespace std;int fb(int n){ if(n==1 || n==2) return 1; else return fb(n-1)+fb(n-2);}int main(){ in
2021-11-15 09:20:48
1030
原创 蓝桥杯历届试题——蚂蚁感冒(模拟)
1.题目描述2.输入输出3.输入输出样例4.解题思路首先对于本题,有一个更高层的抽象:题目中说到两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。其实这就等同于两只蚂蚁互相路过继续沿杆方向前进,而得了感冒的蚂蚁,则会将感冒传染给从它身边路过的蚂蚁。接下来就是要分不同的情况去讨论了,首先是最容易理解的两种情况:黑色表示初始就感冒的蚂蚁,红色表示本次实验中不会感冒的蚂蚁,蓝色表示是在本次实验中被传染感冒的蚂蚁。(但是想想看,还有两种特殊情况)特殊情况是这样的:在这种情况中,没有一只蚂蚁会
2021-11-01 08:25:04
488
原创 蓝桥杯2014年第五届真题-分糖果(模拟)
蓝桥杯2014年第五届真题-分糖果题目描述输入要求输出要求样例输入输出解题思路:采用函数式编程的思想,要解决问题应当有两个子操作:一个是要让每个小朋友将自己一半的糖果分给左手边的小朋友;另一个是让老师给每次给奇数个糖果的小朋友再分一个糖果。循环上述两个操作,直到每个小朋友的糖果数相等为止,对应函数judge来判断。代码如下:#include<bits/stdc++.h>using namespace std;#define maxn 105int a[maxn]
2021-10-28 21:17:29
206
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人