随笔分类 -  动态规划

摘要:传送门:https://leetcode.com/problems/longest-valid-parentheses/ 题意:给出一个由括号'('与')'组成的字符串,找出最长合法连续子串的长度 思路:首先需要注意的是,子串要是连续的,然后按顺序一个'('匹配一个')',比如"()()()","( 阅读全文
posted @ 2019-11-30 22:55 FanJiaming 阅读(158) 评论(0) 推荐(0)
摘要:题目:题目链接 题意:给出两个字符串s和p,问是否能够完全匹配,其中s只包括小写字母,p除了可能包括小写字母外还含有字符'.'和'*','.'可以匹配任意字母,'*'表示其前面的那个字符可以有任意个(可以为0个) 思路:类比LCS(最长公共子序列)问题,我们很容易想到该题的动态规划解题思路。对于该题 阅读全文
posted @ 2019-11-09 00:09 FanJiaming 阅读(219) 评论(0) 推荐(0)
摘要:题目:题目链接 题意:输入两个长度分别为n和m的颜色序列,要求按顺序合并成同一个序列,即每次可以把一个序列开头的颜色放到新序列的尾部。对于每个颜色c来说,其跨度L(c)等于最大位置和最小位置之差,输出各颜色跨度之和。 思路:设d(i, j)表示两个序列分别移走了i和j个元素,还需要多少费用。每移一次 阅读全文
posted @ 2019-01-25 18:37 FanJiaming 阅读(179) 评论(0) 推荐(0)
摘要:题目:题目链接 思路:预处理出l到r为回文串的子串,然后如果j到i为回文串,dp[i] = min(dp[i], dp[j] + 1) AC代码: 阅读全文
posted @ 2019-01-19 16:02 FanJiaming 阅读(131) 评论(0) 推荐(0)
摘要:题目:题目链接 思路:由于t最大值其实只有180 * 50 + 678,可以直接当成01背包来做,需要考虑的量有两个,时间和歌曲数,其中歌曲优先级大于时间,于是我们将歌曲数作为背包收益,用时间作为背包容量进行dp,记录下最多歌曲数目,最后通过最多歌曲数目得出最多歌曲数目下的最长时间,利用滚动数组我们 阅读全文
posted @ 2018-12-01 21:25 FanJiaming 阅读(154) 评论(0) 推荐(0)
摘要:题目:题目链接 思路:从后往前进行dp,用next数组记录字典序最小的那一条路径 AC代码: 阅读全文
posted @ 2018-11-22 21:41 FanJiaming 阅读(178) 评论(0) 推荐(0)
摘要:题目:题目链接 思路:每个方块可以用任意多次,但因为底面限制,每个方块每个放置方式选一个就够了,以x y为底 z 为高,以x z为底 y 为高,以y z为底 x为高,因为数据量很小,完全可以把每一种当成DAG上的一个结点,然后建图找最长路径。 AC代码: 阅读全文
posted @ 2018-11-12 09:03 FanJiaming 阅读(131) 评论(0) 推荐(0)
摘要:问题描述:有n个矩形,每个矩形可以用两个整数a,b描述,表示它的长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d,或者b<c,a<d(相当于把矩形X旋转90°)。例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)内。你的任务是选出尽可能多的矩形排成一行。使得除了最 阅读全文
posted @ 2018-11-04 22:18 FanJiaming 阅读(362) 评论(0) 推荐(0)