
dp
kbb0824
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
455A. Boredom
题意如下: 在一个数组中删除数字,当删除x时,该x(不包括别的x)以及所有的x-1和x+1都会被删除,得到x分。怎样的删除顺序最终得到的总分最高。 分析: 将数组排序,cnt[i]记录每个数出现的个数,初始时dp[i][0]表示数字在这里插入代码片表示删除数字i后所能得到的最高分。 ...原创 2020-12-01 20:43:51 · 192 阅读 · 0 评论 -
189A. Cut Ribbon
可以这样理解题:从位置0开始走,每一步可以走a或b或c,走到终点n最多需要多少步。 dp[i]表示到达位置i最多需要多少步,由于只有位置i-a,i-b,i-c可以到达位置i,所以dp[i]=max(dp[i-a],dp[i-b],dp[i-c])+1,初始时dp[0]=0,其余位置为-1,表示不可到达。 n, *rib = map(int, input().split()) rib.sort() res = [0] + [-1] * n for i in range(rib[0], n + 1):原创 2020-12-01 18:46:06 · 178 阅读 · 0 评论 -
300. 最长上升子序列
将问题分解为子问题:求以第 i 个元素为结尾的最长上升子序列。 定义子问题的递归求解方式:f(n) = max(f(i)) + 1 , i < n, a[i] < a[n]。 依次求解子问题,并保存结果。 合并子问题的解,得到最优解。 class Solution: def __init__(self): self.ans = [] def f(self,i,nums): # 求解子问题的递归函数 if i == 0: # 终止条件 .原创 2020-10-26 19:53:26 · 197 阅读 · 0 评论