Super Jumping! Jumping! Jumping! HDU - 1087
题意:
给定一条长度为n的序列,其中一定存在一条元素和最大的严格上升子序列,求这条序列的元素和。
题解:
最长上升序列模板题
代码:
#include<bits/stdc++.h>
#define debug(a,b) printf("%s = %d\n",a,b);
typedef long long ll;
using namespace std;inline int read(){int s=0,w=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();//s=(s<<3)+(s<<1)+(ch^48);return s*w;
}
const int maxn=3e3+9;
int a[maxn];
int dp[maxn];
int main()
{int n;while(cin>>n){memset(dp,0,sizeof(dp));if(n==0)break;for(int i=1;i<=n;i++)cin>>a[i];int maxx=0;for(int i=1;i<=n;i++){dp[i]=a[i];for(int j=1;j<=i;j++){if(a[j]<a[i]) dp[i]=max(dp[j]+a[i],dp[i]);}maxx=max(dp[i],maxx);}cout<<maxx<<endl;}
}