- 博客(5)
- 收藏
- 关注
原创 算法学习笔记——深度优先搜索DFS 2024.5.25
我们需要从点A出发,到达点B,因此就要从A的坐标开始进行搜索,直到递归到点B。即递归出口就是参数i、j都等于点B的坐标。我们定义两个pair,分别为A、B,储存点A和点B的坐标。题目中要求必须+、-交替的前进,那我们不妨定义一个map,让‘+’对应1,让‘-’对应-1,只要两者加起来是0就代表这个位置可以前进,反之则不行。定义一个char数组a[N][N]来储存输入的地图信息,用一个bool数组b[N][N]来储存路径状态信息,即是否走过该点,如果为true就是走过,为false就是没有走过。
2024-05-25 11:56:54
443
原创 算法学习笔记——动态规划.最长上升/下降子序列 2024.5.24
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于 30000 的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。输入 1 行,若干个整数(个数 ≤1e5)
2024-05-24 23:04:34
635
1
原创 算法学习笔记——贪心 2024.5.23
现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。我们只需要从第一个开始遍历,如果该硬币不符合目标状态,就将它和它后面的硬币都进行翻转。如果同时翻转左边的两个硬币,则变为:oooo***oooo。两行等长的字符串,分别表示初始状态和要达到的目标状态。我们约定:把翻动相邻的两个硬币叫做一步操作。比如,可能情形是:**oo***oooo;小明正在玩一个"翻硬币"的游戏。
2024-05-23 18:06:06
206
原创 算法学习笔记——二分、前缀和、贪心 2024.5.21
小蓝作为班级里的体育健将,他被安排在校运会时参加 𝑛n 个体育项目,第 𝑖i 个体育项目参赛需要耗时 𝑎𝑖ai 分钟,赛后休息需要 𝑏𝑖bi 分钟(这意味着当他参加完这场比赛后需要经过 𝑏𝑖bi 分钟才能再次参加其他项目)。由于小蓝实在太强了,无论参加任何比赛他都可以拿到金牌,但他能够参加校运会的时间有限,最多只能参加 𝑘k 分钟,请问他最多能拿多少块金牌?第一行包含两个整数 𝑛n 和 𝑘k,表示体育项目数量和小蓝的可参加校运会时间。
2024-05-21 17:12:08
970
原创 算法学习笔记——二分枚举 2024.5.20
例如一块 6x5 的巧克力可以切出 6 块 2x2 的巧克力或者 2 块 3x3 的巧克力。小明一共有 N 块巧克力,其中第 𝑖 块是 𝐻𝑖×𝑊𝑖 的方格组成的长方形。最后输出的l是恰好满足条件的长度,即恰好使得巧克力数大于或等于小朋友的长度,加1就不行了。所以我们要从1枚举到给定的最大长度1e5,由于二分枚举的时间复杂度低,所以不用担心超时。当然小朋友们都希望得到的巧克力尽可能大,你能帮小明计算出最大的边长是多少么?首先我们需要确定一块巧克力到底是怎么切割的。输出切出的正方形巧克力最大可能的边长。
2024-05-20 23:34:10
690
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人