专栏文章
刷题总结2
个人记录参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miqwy8x7
- 此快照首次捕获于
- 2025/12/04 12:05 3 个月前
- 此快照最后确认于
- 2025/12/04 12:05 3 个月前
同步于cnblogs
T1 AT_joisc2007_buildi ビルの飾り付け (Building)
简化题意
最长上升子序列模板
分析
做法
考虑DP
- 定义状态:表示以结尾的最长上升子序列长度
- 确定答案:
- 状态转移:对于每个: (1)当从以第个数结尾的地方再接一个数,即 (2)自己单独成一个子序列
- 边界条件:(每个数都能单独成一个子序列)
做法
考虑贪心(往死里贪)
所以对于最大上升子序列,结尾元素越小,越有利于后面接上其他的数,也就可能变得更长
所以创建一个数组,用来存贮现在的最长上升子序列中的元素
对于每个,可以在数组中找到一个第一个比他大的数,那么这个数就能替换掉数组中的那个数,而的答案就是找到的数的下标,因为前面都是比他小的数,自然的,他也可以接在这些数后面
但是这样可能还是要扫一遍数组,但我们能发现,数组永远是单调递增的!所以使用二分大法,时间复杂度
P.S.:一定要初始化为无穷大,因为数要越小越好
Code
T2 AT_abc281_d [ABC281D] Max Multiple
分析
- 定义状态:表示前个数,选了个,余数为时的最大和
- 答案:,否则为
- 方程: (1)不选这个数: (2)选这个数:
- 边界:,
Code
T3 AT_abc369_d [ABC369D] Bonus EXP
题意简化
有只怪物,每只怪物有一个数值,对于每只怪物,你有两种选择:
- 放走他,获得经验
- 击败他,获得经验,特别的,如果这只怪兽是你击败的偶数只怪物,你还可以额外获得经验 求最后你能获得多少经验
分析
- 定义状态:表示前个怪物,选了奇数/偶数个怪物的最大经验
- 答案
- 状态转移方程: (1)选第个怪物,且为奇数个: (2)选第个怪物:
- 边界:由于可能有负数,所以dp设为负无穷
Code
还有两题有时间补上
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...