随笔分类 -  DP

摘要:题目描述 给定一个整数数组和一个整数 k,找出 k 个不重叠子数组使得它们的和最大。每个子数组的数字在数组中的位置应该是连续的。 返回最大的和。 注意事项 子数组最少包含一个数 样例 给出数组 [-1,4,-2,3,-2,3] 以及 k = 2,返回 8 思路 dp[i][j] = max(dp[x 阅读全文
posted @ 2017-08-16 22:04 hjzqyx 阅读(413) 评论(0) 推荐(1) 编辑
摘要:题目链接:http://www.lintcode.com/zh-cn/problem/longest-increasing-continuous-subsequence-ii/最长上升连续子序列 II 给定一个整数矩阵(其中,有 n 行, m 列),请找出矩阵中的最长上升连续子序列。(最长上升连... 阅读全文
posted @ 2015-11-22 21:26 hjzqyx 阅读(991) 评论(0) 推荐(1) 编辑
摘要:1 #include 2 #include 3 #include 4 #include 5 #define N 100005 6 using namespace std; 7 int num[N]; 8 int a[N]; 9 int pre[N];10 int pos[N];11 12 void... 阅读全文
posted @ 2014-10-23 18:40 hjzqyx 阅读(674) 评论(0) 推荐(0) 编辑
摘要:1 /* 2 题意:给一个长度为n的序列, 从中选择长度为m的k个区间(任意两个区间不会有公共部分) 3 使得所选择的区间的和最大! 4 思路:这是一种很常见的dp 5 6 dp[i][j] 表示的是前 i 个数选择 j 个 长度为m区间的最大和! 7 ... 阅读全文
posted @ 2014-09-24 20:12 hjzqyx 阅读(317) 评论(0) 推荐(0) 编辑
摘要:1 /* 2 题意:n个任务,有某些任务要在一些任务之前完成才能开始做! 3 第k个任务的约束只能是1...k-1个任务!问最终需要最少的时间完成全部的 4 任... 阅读全文
posted @ 2014-09-05 23:12 hjzqyx 阅读(395) 评论(0) 推荐(1) 编辑
摘要:1 /* 2 树形dp! 3 判重思路: 4 当dp[v][0]==dp[v][1]时,很自然,flag[u][0]必然是有两种方案的。flag[u][1]则不然, 5 因为它只和dp[v][0]有关系。而若flag[v][0]不唯一时,则必然flag[u][1]也不唯一 ... 阅读全文
posted @ 2014-08-29 12:40 hjzqyx 阅读(225) 评论(0) 推荐(0) 编辑
摘要:1 /* 2 题意:给出一串字符(全部是小写字母),添加或删除一个字符,都会产生一定的花费。 3 那么,将字符串变成回文串的最小花费是多少呢? 4 5 思路:如果一个字符串增加一个字符 x可以形成一个回文串,那么从这个字符串中删除这个字符 x 6 同样... 阅读全文
posted @ 2014-08-25 22:44 hjzqyx 阅读(443) 评论(0) 推荐(0) 编辑
摘要:1 /* 2 题意:给你不同面额的硬币(每种硬币无限多),需要找零的面值是T,用这些硬币进行找零, 3 如果T恰好能被找零,输出最少需要的硬币的数目!否则请输出剩下钱数最少的找零方案中的最少硬币数! 4 5 思路:转换成完全背包的问题! 6 */ 7 #incl... 阅读全文
posted @ 2014-08-25 21:12 hjzqyx 阅读(354) 评论(0) 推荐(0) 编辑
摘要:1 /* 2 题意: 有两棵苹果树,每一棵苹果树每一秒间隔的掉落下来一个苹果,一个人在树下接住苹果,不让苹果掉落! 3 人在两棵树之间的移动是很快的!但是这个人移动的次数是有限制的,问最多可以接住多少个苹果! 4 5 思路:dp[i][j]表示的是前 i个苹果掉落... 阅读全文
posted @ 2014-08-23 21:51 hjzqyx 阅读(295) 评论(0) 推荐(0) 编辑
摘要:1 /* 2 题意:矩阵相乘的最少的步数 3 dp[i][j]=min(dp[i][j], dp[i][k]+dp[k+1][j]+num[i-1]*num[k]*num[j]); 4 表示的是第i个矩阵到第j个矩阵相乘的最少步数 5 sign[i][j]表示的是第... 阅读全文
posted @ 2014-08-15 23:19 hjzqyx 阅读(223) 评论(0) 推荐(0) 编辑
摘要:1 /* 2 注意的事项:是输出小于 10^n的正整数的个数哦!开始的时候总比样例输出多一个数, 3 纠结了好久,原来是 0加了进去了! 4 5 dpI[n][m]表示的是第n位添加数字m(0....9)的构成单调递增数个数 6 dpD[n][m]表示的是第n位添... 阅读全文
posted @ 2014-08-14 23:17 hjzqyx 阅读(443) 评论(0) 推荐(0) 编辑
摘要:/* 动态转移方程:dp[i][j]=max(dp[i-1]+a[i], max(dp[t][j-1])+a[i]) (j-1 2 #include 3 #include 4 #define N 10000 5 using namespace std; 6 7 int dp[N][N... 阅读全文
posted @ 2014-07-29 14:51 hjzqyx 阅读(325) 评论(0) 推荐(0) 编辑