动态规划
__default__
一个学生。
展开
-
最长连续递增子序列(Longest Continuous Increasing Subsequence)
题目解释: 最长连续递增子序列是在一个未经排序的整数数组中,最长且连续的的递增序列,简称 LCIS。 例如: [1,3,5,4,7], 最长连续递增序列是 [1,3,5], 长度为3,尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。 [2,2,2,2,2], 最长连续递增序列是 [2], 长度为1。思路分析: ...原创 2018-07-31 09:59:56 · 3598 阅读 · 0 评论 -
最长递增子序列——Longest Increasing Subsequence
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。 O(n)的解法: 我们设立一个数组 dp ,使用 dp[i] 记录 以 nums[i] 结尾的LIS 的长度,那么 dp[i] 就等于 num[i] 跟 dp[0…i - 1] 所组成...原创 2018-07-31 09:59:07 · 1057 阅读 · 0 评论 -
最长公共子序列——Longest Common Sequence
名词解释: 所谓最长公共子序列就是在一个序列中按原顺序抽出若干项组成的新序列,注意子序列中各元素顺序应与原序列相同。 此题可用动态规划来解。#include <bits/stdc++.h>using namespace std;int dp[25][25];int lcs(string x,string y){ memset(dp,0,sizeof...原创 2018-07-31 09:59:20 · 1076 阅读 · 0 评论 -
Super Jumping! Jumping! Jumping! HDU - 1087 最长递增子序列变形
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1087 题意: 有一种游戏,给定你一个数字序列,从一头走到另一头,可以跳任意步,每经过一个点,该点的数字就会累加到你的分数中,问最多可以获得多少分。思路: 这个归根到底是求一个递增的序列,这个序列满足某种限制,这样一来就和最长递增子序列有些相似,在最长递增子序列中,是求一个递增的子...原创 2018-08-16 20:02:17 · 338 阅读 · 0 评论 -
Milking Time POJ - 3616 简单DP 最长递增子序列变形
题目链接POJ3161 题意: 一头奶牛为自己未来 n 小时的产奶做规划,共有m个时间段,每个时间段用三个字母表示,s:该时段开始时间,d:该时段结束时间,p:该时间段产奶量。并且每次产完奶之后需要休息 r 小时休息才能进行下一次产奶。问最大产奶量是多少?分析: 这也是一道求子序列的题目,该子序列需要满足的条件是1.和最大;2.子序列中前一个元素的结束时间+休息时间 <...原创 2018-08-16 21:19:33 · 454 阅读 · 0 评论 -
Max Sum HDU - 1003 简单动态规划
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003题意: 题中给出一个数组,让你求出子数组和的最大值,以及起始位置。思路: 首先很容易想到 O(2N)O(2N)O(2^N) 的解法,但这明显是不行的。我们可以使用动态规划的思想解这道题。用 curcurcur 结构体保存当前子数组最大值的相关信息(最大值和起始位置),cu...原创 2018-08-19 22:04:00 · 179 阅读 · 0 评论