dengch

 

随笔分类 -  提高课

最长公共上升子序列
摘要:题目概述:给定两个序列,求解它们的最长公共上升子序列 解题思路: 集合定义:f[i][j]:所有a[1...i]中和b[1...j]中以b[j]结尾的最长上升子序列的长度。 集合划分:不包含a[i]:等价于所有a[1...i - 1]中和b[1...j]中以b[j]结尾的最长上升子序列的长度,即f[ 阅读全文

posted @ 2023-10-05 10:06 BkDench 阅读(46) 评论(0) 推荐(0)

导弹防御系统
摘要:题目概述:现在R国更新了导弹防御系统,使得该系统拦截的导弹高度要么是严格上升的,要么是严格下降的。问拦截所有导弹至少需要多少套系统 解题思路:在拦截导弹一题的基础上,多引入了一个选择:导弹是归为上升子序列,还是下降子序列。可以使用dfs直接暴力枚举所有选择,当然中间会有剪枝。 #include <i 阅读全文

posted @ 2023-09-29 13:24 BkDench 阅读(78) 评论(0) 推荐(0)

拦截导弹
摘要:题目概述:有一套导弹拦截系统,其每次可以拦截的导弹高度都不能高于上一次拦截导弹的高度。现在有一些导弹飞来,问这套系统最多能够拦截多少导弹,若想拦截所有的导弹,最少需要多少套系统。 解题思路:第一问就是典型的LIS模型。第二问的关键在于将某枚导弹归为哪一类下降子序列,从而使得使用的系统最少。这里直接给 阅读全文

posted @ 2023-09-29 13:16 BkDench 阅读(116) 评论(0) 推荐(0)

最大上升子序列和
摘要:题目概述:给定一个序列,求解该序列的最大上升子序列的和 解题思路:我们在LIS的集合定义为:以i结尾的上升子序列的最大长度,那其实我们只需要将集合定义改为:以i结尾的上升子序列的最大和即可。 #include <iostream> #include <algorithm> #include <cst 阅读全文

posted @ 2023-09-29 12:55 BkDench 阅读(41) 评论(0) 推荐(0)

友好城市
摘要:友好城市 题目概述:有n个城市分布在一条大河两岸,现在,两岸的城市准备在河上修建桥。每个城市在河对岸都有自己的友好城市,只有友好城市之间才能建立桥。问最多可以修建多少座桥,且桥与桥之间互不交叉。 解题思路:我们可以先考虑怎样会出现交叉情况,当一侧的城市编号为正序(3,4),另一侧的城市编号出现倒序( 阅读全文

posted @ 2023-09-26 20:59 BkDench 阅读(74) 评论(0) 推荐(0)

合唱队形
摘要:合唱队形 题目概述:有n个同学,需要从中挑选n - k个学生。使得剩下的学生依据升高按照先递增后递减的规则进行排队。问最少需要排除多少个人。 解题思路:换个说法,题目意思就是使这个队列尽可能的长,所以排除的人就尽可能少。而这样的话,就转化为登山问题。 点击查看代码 #include <iostrea 阅读全文

posted @ 2023-09-25 22:15 BkDench 阅读(41) 评论(0) 推荐(0)

登山
摘要:登山 题目概述:有n座景点,海拔各不相同。一个登山团队想要尽可能多的到访更多的景点,他们先上山游访,而后选择下山,且一旦下山,就会保持下山的状态(海拔依次递减)。问他们最多能够访问多少个景点。 解题思路:也很容易将其抽象为最长上升子序列模型。可以将其分成两部分,前半部分是上山,即正序做dp;后半部分 阅读全文

posted @ 2023-09-23 19:46 BkDench 阅读(67) 评论(0) 推荐(0)

怪盗基德的滑翔翼
摘要:怪盗基德的滑翔翼 题目概述:怪盗基德可以选择一个方向,并沿着该方向进行滑行,规定他只能从较高的楼房移动到较低的楼房,问他最多可以走过多少栋楼房。 解题思路:很容易将该题抽象为最长上升子序列模型,需要注意的是本题可以选择滑行的方向,也就是正反方向分别进行dp,取最大值 #include <iostre 阅读全文

posted @ 2023-09-23 19:30 BkDench 阅读(317) 评论(0) 推荐(0)

导航