最大上升子序列和
2017-06-03 22:44
162 查看
总时间限制: 1000ms 内存限制: 65536kB
描述
一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, ...,aN),我们可以得到一些上升的子序列(ai1, ai2, ..., aiK),这里1 <= i1 < i2 < ... < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中序列和最大为18,为子序列(1, 3, 5, 9)的和.
你的任务,就是对于给定的序列,求出最大上升子序列和。注意,最长的上升子序列的和不一定是最大的,比如序列(100, 1, 2, 3)的最大上升子序列和为100,而最长上升子序列为(1, 2, 3)
输入输入的第一行是序列的长度N (1 <= N <= 1000)。第二行给出序列中的N个整数,这些整数的取值范围都在0到10000(可能重复)。
输出最大上升子序列和
样例输入
样例输出
18
经典例题最长上升子序列的简单变式,dp基础题(hhh我这种dp辣鸡竟然也敢说这种话)
描述
一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, ...,aN),我们可以得到一些上升的子序列(ai1, ai2, ..., aiK),这里1 <= i1 < i2 < ... < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中序列和最大为18,为子序列(1, 3, 5, 9)的和.
你的任务,就是对于给定的序列,求出最大上升子序列和。注意,最长的上升子序列的和不一定是最大的,比如序列(100, 1, 2, 3)的最大上升子序列和为100,而最长上升子序列为(1, 2, 3)
输入输入的第一行是序列的长度N (1 <= N <= 1000)。第二行给出序列中的N个整数,这些整数的取值范围都在0到10000(可能重复)。
输出最大上升子序列和
样例输入
7 1 7 3 5 9 4 8
样例输出
18
经典例题最长上升子序列的简单变式,dp基础题(hhh我这种dp辣鸡竟然也敢说这种话)
#include <iostream> #include<vector> #include<algorithm> #include<queue> #include<cstring> using namespace std; int main() { int dat[1005]; int dp[1005]; memset(dp,0,sizeof(dp)); int n; cin>>n; for(int i=1;i<=n;++i) { cin>>dat[i]; dp[i]=dat[i]; } for(int i=2;i<=n;++i) { for(int k=1;k<i;++k) { if(dat[k]<dat[i]) { dp[i]=max(dp[i],dp[k]+dat[i]); } } } int tmpmax=-100; for(int i=1;i<=n;++i) { if(dp[i]>=tmpmax) { tmpmax=dp[i]; } } cout<<tmpmax; return 0; }
相关文章推荐
- |NOIOJ|动态规划|3532:最大上升子序列和
- 题目1480:最大上升子序列和
- 动态规划练习一 13:最大上升子序列和
- 最大上升子序列和
- HDU 1087 Super Jumping!Jumping!Jumping求连续上升子序列的最大和值 (解析)
- 最大上升子序列和
- 13:最大上升子序列和
- tyvj 1208 最长不下降子序列2 求序列b1,b2,b3,…,bm中所有长度(n)最大上升子序列的个数
- 最大上升子序列LIS(Java)
- leetcode+求最大无重复字母字串+n^2,循环记得标记,循环有点像最长上升子序列
- EOJ1109 dp最大上升子序列
- “最长上升子序列,最大连续子序列和,最长公共子串”的Java实现
- HDU 1257 (最大上升子序列)
- 3532:最大上升子序列和
- uva10605 最大公共子序列转化为最大上升子序列
- 动态规划--最大上升子序列和
- Hdu 1025 Constructing Roads In JGShining's Kingdom 最大上升子序列nlogn算法
- 最大上升子序列和
- hdu 3998 Sequence --最长上升子序列+最大流
- 九度 oj 题目1480:最大上升子序列和