自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 游戏,区间dp

这道题并不是单纯的选择左右端中最大的数值,而是有策略的去选择,让其所选择的数值最大。

2024-04-11 17:11:00 195

原创 青蛙跳杯子

这道题和八数码类似,要先用find函数来找到*的位置,对其进行编辑,而不是对青蛙进行编辑,这样要求我们以下标为字符串的特殊储存结构来储存操作数,而map和unordered_map都可以做到这点,但是unordered_map运行速度更快。还得用count防止一种情况出现两次,以求得最小值。

2024-04-11 15:03:47 174

原创 砝码称重,线性dp

所以这道题的状态转移方程为f[i][j]=f[i-1][j]||f[i-1][j+a[i]]||f[i-1][abs(j-a[i])];这道题是经典的dp问题,和01背包有些类似,01背包让求的是能凑出的最大值,而这道题是求的是所有可能凑出来的数。

2024-04-11 14:18:23 153

原创 最短编辑距离

dp问题的第一步就是要确定状态数组,要确定好要用几维的,然后要找到他的状态转移方程。还要对数组初始化,这也十分关键,这道题的初始化就是比较难想的f[i][0]=i,就是将长度为i的a字符串变成长度为0的b字符串需要i步,f[0][i]=i也类似。

2024-04-09 20:06:27 137

原创 分考场,dfs

之前做的dfs都是找两者有关系的放在一起,而这道题是有关系的不能够放在一起,要分两种情况,如果目前考场中的学生与马上要进去的学生没关系,我们就让考场的座位加一个,如果有关系,就开辟一个新的考场,要注意的是要是已经判断出这种方式不可行,要及时剪枝。

2024-04-07 20:42:10 152

原创 危险系数,dfs

这道题是一道典型的dfs的题,但是我自己在写代码的时候,把标记数组v想成了标记路径的功能了,这样可能会导致一个点被重复走好几次,所以这道题应该用一维数组来标记点。

2024-04-06 19:42:47 224 1

原创 机器人扫地,二分

由题目我们可知最短的最长时间取决于所有机器人中那个完成打扫最慢的那个机器人,而想要使其尽可能的小要使其打扫的区域尽可能相等,而由最左边的那个机器人我们可以猜出,我们要保证机器人的左边要打扫完,然后再打扫右边。

2024-04-06 15:07:58 123 1

原创 青蛙过河,二分

这道题很明显从最大的里面找最小的,二分的要搜寻的对象也就确定了,而这道题的难点在于怎样写check函数,而这道题我们仔细想如果想要过去X个来回,他所查询的最小跳动距离y,在任意y的区间里,石头高度的和应该大于等于2x。

2024-04-06 13:45:05 139 1

原创 跳石头,二分

这道题是经典的二分题目,通过二分查找最大的最小距离,而二分常常用在从最大中找最小,从最小中找最大。

2024-04-06 12:56:52 130 1

原创 松散数组,线性dp

dp的题要确定好属性以及列好状态方程,这道题的状态方程f[i][2]代表着第i个数选不选,f[i][0]为不选,f[i][1]为选择,在不选的前提下,还要用状态数组表示第i-1到底选不选,两种情况取最大值,第i-1个不选第i个一定就能选,然后输出max(f[i][0],f[i][1]),取得最大值,动态规划要要确定好列几维的数组,列好状态方程。

2024-04-05 19:42:34 429 1

原创 最长上升子序列,dp线性

这是线性动态规划里的经典问题,他的朴素和优化的方法都类似,都是找从右向左数第一个小于它的数,然后判断是f[i]=max(f[i],f[j]+1)来更新状态,它的优化方式主要优化在找从右向左数第一个小于它的数,优化使用了二分,会比朴素方式中的二重循环快很多。

2024-04-05 17:16:01 160 1

原创 乌龟棋,线性dp

当我们需要在某一段中寻找最小值的时候,我们可以运用动态规划来做,这个乌龟棋和以前做的线性dp的题是在于它需要开4为数组来表示状态,因为他有四种情况,最后一步的选择会有四种选择.

2024-04-05 16:22:00 145 1

原创 岛屿个数,bfs

这道题难点是你怎么在储存外岛的同时能区别这个岛是不是外环岛里面的内岛。而你可以用bfs来枚举外岛外面的外海同时对其进行标记,如果外海没法和内海相连接,就说明遇到了环岛,而我们这样就不用进一步再寻找环岛内的内岛。当我们在枚举外海时遇见了岛屿,再用bfs来枚举岛屿,进行标记,知道哪些岛是连在一起的。这道题是对你bfs运用的高难度考察,这道题还有很多坑点,比如说他储存在a数组中的0和1不是常数而是字符,你还需要进一步将其转化为常数,如果做出来了因为这一点没ac就气死了,所以阅读题目的时候要认真。

2024-04-05 14:43:20 177 1

原创 飞机降落,dfs

这是一道经典的dfs的题目,这道题主要和排列数字那题的区别是它可能中途循环到尾都找不到合适的条件,所以需要if(dfs(u,start)) return1;来判断他在下一层找没找到合适的飞机进行降落。

2024-04-05 12:58:12 169 1

原创 网络寻路dfs

因为路是双向的所以可以用容器来储存双向的路,a[a]={b,c}表示a点可以去往b和c两点,容器可以做到这一点。不管是dfs还是bfs用容器或者结构体储存数据都是很好的方法。这道题独特的点是他最后一个点可以取在刚开始的那个点,所以要多加一个判断,函数中的数值start也是用来判断这种情况的。

2024-04-04 19:26:03 180 1

原创 迷宫与陷阱

这题主要需要运用三维数组v[N][N][20]来判断这条路在这种状态下能否通过,第三维主要判断这时候的主角处不处于无敌状态之中,因为有些路径第一次可能因为有陷阱没过去,但是从另一个方向获得无敌状态后还可以接着返回去走原来因为陷阱过不去的路,而且有可能更短,所以仅仅使用二维数组判断不出来。使用结构体构造容器或者栈,方便表示多个变量,使更加方便处理数据。

2024-04-04 17:21:47 227 1

原创 dfs,小朋友崇拜圈

题目由下面的解释图可知下标为当前小朋友编码,而q[i]为当前小朋友所崇拜的小朋友的编码。

2024-04-04 14:43:55 186 1

原创 lanqiao 穿越雷区

这道题是一道经典的bfs问题,涉及到最短路问题基本上都用dfs,这道题与走迷宫类似,就是需要在判断条件上进行修改。具体代码与注释如下。

2024-04-04 12:48:14 164 1

原创 dfs、bfs思想和细节

这道题就是为了查找四周都被#包围的#,需要用数组标记,因为改变的话可能会导致本来一个#,四周被#包围,但是因为其中一个#改变为.而导致没被flag标记,答案出现了错误。有些题看起来像运用了bfs的查找方式同时还运用了dfs中的递归,通常用在记忆化搜索,或者需要查找并且标记或者改变某个对象。这题需要运用map来储存步数,map<string,int> 以不同的字符串作为下标,储存下标。要以空格作为移动的目标,要以检查是否换位成功作为结束标志。dfs主要是代码短,写起来思路清晰。而bfs方便找最大最小值。

2024-04-03 20:30:57 190 1

原创 小数二分的题目

通过二分来确定平均数的范围。运用小数二分来查找平均数。

2024-04-02 22:22:24 354

原创 归并,及其思路

1.该题切换池塘的时候需要额外花费时间,如果按正常方式的归并排序会导致路线出现循环往复的现象,这里运用了贪心算法,让其在池塘中钓完了鱼再进行切换下一个池塘。该题还可以使用动态规划,但是运用贪心会更规范些,贪心算法是能找到哪一种是最优选择,而动态规划不能,而该题明显能看出走直线比反复走更优。2.所以我们需要依次枚举我们所选择直线路线,让花费的总时间t减去l[i],再计算该条件下所能钓到的最多的鱼。并归分为二路并归和多路并归,二路并归最常见的是并归排序。acwing 1262 池塘钓鱼。

2024-03-31 14:42:40 408

原创 二分题目和思想

3.可以用二分来寻找,第m个数是多少,即a[i]至少要大于x,再用(a[i]-x)/b[i]+1(因为是向上取整所以要加上1),来计算每个技能要升级几次,总升级次数res>=m(因为在m附近的x不止有一个)。2.优化一下用priotity_queue<int,vector<int>,greater<int>()>来构成最大堆来依次输出前m个最大值。1.朴素做法是用多路并归来思考,将每个技能每次升级增加的的攻击力做成等差数列,然后用多路并归进行排序。如果一个事件可以在数轴上分成两段可以考虑使用二分算法。

2024-03-30 19:55:02 201 1

原创 acwing 单调队列

放入单调队列的不是数组a中的值而是用数组q储存的下标,进队出队的仅仅是代表a中值的下标,这样a中的值不会受到影响。利用队列先进先出的特点模拟滑动窗口。

2024-03-30 13:00:01 166

空空如也

空空如也

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

TA关注的人

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