
Acwing蓝桥杯
文章平均质量分 79
samewide
不定时发点算法笔记和一些算法比赛的题解,以后可能会写点其他方向的文章
展开
-
第十四届蓝桥杯C++ B组 飞机降落
这道题目可以将飞机的到达和降落想象成一个线段问题,不同的是线段的有段点是可以移动的,移动的范围即为可以盘旋的时间。我们很自然的可以想到贪心做法,去满足每一个飞机的降落,并且让每一架飞机都尽早降落,但由于飞机具有盘旋的时间,这个时间是一个区间,使用贪心是不可行的,同时观察数据,最多只有10架飞机,因此大概率不是贪心做法。,因此最大只有$10!其中第 i架飞机在 Ti时刻到达机场上空,到达时它的剩余油料还可以继续盘旋 Di 个单位时间,即它最早可以于 Ti时刻开始降落,最晚可以于 Ti+Di 时刻开始降落。原创 2023-04-13 14:07:22 · 1298 阅读 · 0 评论 -
第十四届蓝桥杯C++ B组——冶炼金属
分析到这里,这道题目的单调性就被发现了,我们这时采用二分查找即可找到min,再取所有记录的min中最大的一个,即为整体的min。对于max,由于它位于区间的右端点,我们也可以重新写一个二分查找去寻找右端点,但代码量增加,可以采取一个转化,仍然使用同一个二分查找的函数。我们寻找满足B + 1的下一个区间的左端点,此时找到的是满足。当作因变量,容易知道,这是一个反比例函数的形状,但是由于下取整,所以实际上以一个下降的分段函数。,因此返回的端点-1即可,最后取所有记录中最小的一个,即为整体的max。原创 2023-04-11 23:36:41 · 555 阅读 · 1 评论 -
Acwing-蓝桥杯-1214.波动数列
那么我们第一时间想到的是去枚举后一项所有的可能,即每一项的下一项有两种可能:加上a或者是减去b,如此我们枚举每一项,然后记录当前数列全部项的和。根据这个思路,我们需要定义一个二维数组,第一维是数列的项数,第二维是数列当前的和。栋栋对这种数列很好奇,他想知道长度为 n 和为 s ,而且后一项总是比前一项增加 a 或者减少 b 的整数数列可能有多少种呢?最明显的特征就是应该是一个整数(题目中强调了需要保证数列的所有项都是整数),因此这就是我们的判断。到此为止,我们所求的数列的个数,就转化成了求合法。原创 2023-04-03 15:44:26 · 306 阅读 · 0 评论 -
Acwing-蓝桥杯-1212.地宫取宝
由于物品的价值是从0开始的,我么为了减少特殊判断,因此将所有的物品数量都加一,因为所求得是方案数,因此并不影响最终的答案。走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。步骤是通用的,分成两大部分状态表示和状态计算,然后进一步分析状态表示中的集合和属性、状态计算中的每一个状态。X 国王有一个地宫宝库,是 n×m个格子的矩阵,每个格子放一件宝贝,每个宝贝贴着价值标签。请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这 k 件宝贝。原创 2023-04-02 16:41:54 · 129 阅读 · 0 评论 -
Acwing-蓝桥杯-895.最长上升子序列
这道题目是一道典型的线性dp问题,dp问题往往最难思考的就是状态转移方程,接下来使用集合yxc的方法分析这道题目。给定一个长度为 N的数列,求数值严格单调递增的子序列的长度最长是多少。第二行包含 N个整数,表示完整序列。的最大值,待到全部遍历结束,则。输出一个整数,表示最大长度。即为最大上升子序列的值。从数组的开头进行遍历,第一行包含整数 N。原创 2023-04-02 14:00:39 · 242 阅读 · 0 评论 -
Acwing-蓝桥杯-1209.带分数
首先我们可以使用dfs算法枚举a,然后枚举c,最后通过公式计算出b,判断b中的每一位数字是是否是合法的。在枚举a和c的过程中,我们使用判重数组来保证这两个数字的每一位都是不重复的,最后再使用该判重数组判断b是否合法即可。这道题目要求我们从1-9的数字中组合出满足题意的可以表示出n的三个数字,因此我们最容易想到的是直接枚举1-9的所有全排列,并且在9个数字中间加两个隔板,以此求得三个数字,然后判断三个数字是否合法。显然这个复杂度是字在可以接受的范围内的。因此我们使用这种暴力枚举全排列的方法是可行的。原创 2023-04-02 10:24:47 · 199 阅读 · 0 评论 -
Acwing-蓝桥杯-116.飞行员兄弟
这道题目初看上去是一道通过上一个状态递推的问题,但是经过分析以后看出,这道题目每次改变一个把手所影响的其他把手太多,因此通过简单的递推并不能很快的找出规律。我们使用pair容器储存每次操作的步骤,分别使用两个vector容纳当前操作的所有步骤now和最小步数需要的步骤res,每次将res赋值为res和temp两者步骤更少的一个即可。因为每一个开关的操作都是有两种情况——操作或者不操作,因此可以使用位运算枚举所有的情况,最后判断每一种操作后所有的开关是否都已经被打开,如果都打开则可以纳入方案。原创 2023-04-02 09:07:29 · 173 阅读 · 0 评论 -
Acwing-蓝桥杯-93.递归实现组合型枚举
ACwing蓝桥杯课程题目原创 2023-03-31 22:26:51 · 225 阅读 · 2 评论