- 博客(122)
- 问答 (1)
- 收藏
- 关注
原创 堆排序:力扣215.数组中的第K个大元素
我们可以使用大顶堆排序算法来解决这个问题。大顶堆是一种完全二叉树,其中每个节点的值都大于或等于其子节点的值。
2025-03-16 17:29:36
378
原创 蓝桥杯 2019 省A 糖果 动态规划/二进制
这里口味组合指的是一个二进制数,每一位表示对应口味是否被包含,如果某一位为1,则表示对应的口味被买了,为0则表示没有买。它也是一个二进制数,每一位表示对应的口味是否在这包糖果里,如果某一位为1,则表示这个口味在这包糖果里,为0则表示不在。同样以三种口味为例,如果第。首先,定义了两个数组:dp数组用于存储达到某种口味组合所需的最小糖果包数,v数组用于存储每包糖果的口味情况。最后,如果对应全口味的糖果包数为100,表示无法满足所有口味,输出-1;),则表示第2种口味和第3种口味在这包糖果里,第1种口味不在。
2024-04-12 18:26:16
525
原创 力扣--动态规划完全背包/深度优先08.11.零币
那么我们考虑,不限各类硬币数,而且可以看作:面值25的硬币重量是25,价值也是25,这可以视为动态规划里面的完全背包问题,那么就简单了。但是很不幸,示例(28/30)无法完全通过,还是有点超时了。
2024-04-07 11:42:33
449
1
原创 二分答案 蓝桥杯 2022 省A 青蛙过河
2.对于一个跳跃能力 y,青蛙能跳过河 2x 次,当且仅当对于每个长度为 y 的区间,这个区间内 h 的和都大于等于 2x。1.从学校到家和从家到学校,跳跃都是一样的,直接看作2*x次过河就可以。
2024-04-05 13:42:02
766
原创 二分答案跳石头游戏
在每次跳跃时,遍历石头数组,根据当前位置和上一次跳跃位置计算跳跃距离,如果距离大于等于最大跳跃长度,则更新当前位置;:问题的解具有单调性,即如果一个解是可行解,那么比它更大的值也必须是可行解,反之,比它更小的值则不是可行解。: 用户输入了三个整数,分别表示石头的总长度l,石头的数量n,以及最多可以撤去的石头数量m。:首先确定一个合适的搜索范围,通常是问题解的可能范围,比如最小可能解和最大可能解之间的范围。: 循环读入每块石头的位置,并计算出最小的相邻石头间距,存储在变量longmin中。
2024-04-04 21:23:17
666
原创 蓝桥杯 2022 省A 选数异或
(注意==的优先级比^高,记得加括号(a[i]^a[j])==x)但是显然这样是不能得满分的,那么我们就要优化一下思路。一种比较无脑暴力点的方法,时间复杂度是(n²+m)。
2024-03-28 20:30:14
611
原创 力扣--并查集684.冗余连接
然后遍历所有的边,如果两个节点已经在同一个连通分量中,则说明当前边会形成环,记录下环中的两个节点。利用并查集(Union-Find)的思想,通过合并连通分量的方式,来判断图中是否存在环,从而找出冗余的边。函数用于查找节点的根节点(即所在连通分量的代表节点),采用了递归方式实现路径压缩,以提高查找效率。函数用于将两个节点连接在一起,即将其中一个节点的父节点更新为另一个节点的父节点。函数用于寻找冗余连接的边,即能够形成环的边。首先初始化父节点数组。在主函数中,首先创建Solution类的一个对象,然后调用。
2024-03-26 12:48:51
427
原创 蓝桥杯 2023 省A 颜色平衡树
重儿子: 对于一个非叶节点u ,设v 是u 的儿子,且以v 为根的子树包含的节点比以u 的其他儿子为根的子树包含的节点都多,则称v 为u 的重儿子。遍历重儿子,遍历完不用清零,再遍历,将轻儿子合并到重儿子上去,其合并结果存储于全局数组。轻儿子: 对于一个非叶节点u ,在u 的各个儿子中,除了重儿子,都是轻儿子。的下一条邻接边在边数组中的位置。在树的边结构中,每条边连接两个节点,次的不同颜色的数目。的下一条邻接边在边数组中的位置,以便能够快速地遍历节点。就是其中一个节点的编号,表示了这条边连接到了哪个节点。
2024-03-24 21:14:30
1176
原创 蓝桥杯 2022 省B 砍竹子
非常明显,这题是个贪心。因为这题是求最小操作次数,而且每次操作都会变小,所以肯定要优先操作大的元素,这样它变小之后才可能和其它元素一起操作以减少操作次数。所以:建立两个数组,一个存竹子高度,一个存还能被砍的次数。读入完之后循环把序列中砍伐次数最大的竹子砍一次并记录砍伐次数。这里注意,区间修改的要求是。,所以要判断砍伐次数最大的竹子是否相邻且高度相同,如果是那就一起砍了。
2024-03-22 22:30:26
593
原创 蓝桥杯 2022 省B 积木画
这是个典型的动态规划问题,重点在于找到他的递推方程。可简单算出填满第0 1 2 3 4列个数为0 1 2 5 11;运气好点,找到递推公式dp[i]=2*dp[i-1]+dp[i-3];直接解决了。但我们还是按照动态规划一步一步来。状态定义:初始状态:状态转移方程:边界条件:结果输出:综上所述,这段代码使用动态规划的思想,通过状态转移方程计算填满画布所需的不同方式数,并输出结果。占满状态有个很不好想到的类型,就是dp[i-2][1],本来我们都是只考虑加一个积木后的情景,因为我们不考虑除了上下突和
2024-03-22 21:36:20
565
原创 蓝桥杯 2022 省B 李白打酒加强版
但是很显然这个方法耗的时间很长,只能通过部分示例。那么我们要另寻他法。动态规划是一个好方法,但是实际操作过程中还是不那么好想。
2024-03-22 19:52:02
1972
原创 蓝桥杯 2023 省B 飞机降落
现在时间是10,有个飞机20才到,我们是可以干等10分钟。首先,这题要求的数据量比较少,我们可以考虑考虑暴力解法。
2024-03-19 19:52:41
519
原创 力扣--深度优先算法/回溯算法40.组合总和 Ⅱ
例如[1,2,1],target为3时,[[1,2],[2,1]],但是这样两个算是同一组和,而如果用set把重复的去了,又会导致当target为2时,只有[2],而[1,1]这个答案就忽略了。// 对候选数组进行排序,方便后续处理 sort(candidates.begin(), candidates.end());// 避免重复选择相同的数字,如果当前数字与前一个数字相同且不是起始位置,则跳过。2.数组中可能可以有重复的数这样会导致重复选。1.同一个数不能重复选;
2024-03-10 16:59:46
372
原创 力扣--滑动窗口/单调队列239.滑动窗口最大值
因为如果滑动窗口暴力处理,时间复杂度为O(n²),无法通过。1.单调队列里单调递减,但是怎么找到什么时候把队首踢出队列?方便判断是否队首元素已经该提出窗口。,并且队列里不是存放数字大小而是。2.队首队尾都要进行删减操作。最后找到好的解决方法,用。
2024-03-08 16:29:05
814
空空如也
c语言codeblocks
2022-10-20
这个好像用数组写吧?
2022-10-13
看看这个咋写,用数组翻转?
2022-10-06
有没有朋友看看怎么做,用的codeblocks
2022-09-30
这个代码怎么写?求!
2022-09-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人