1 solutions
-
2
#include<bits/stdc++.h> using namespace std; const int N=10010; int a[N],f[N]; //f[i]表示以a[i]结尾的最长上升子序列的和 int main() { int n; cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) { f[i]=a[i]; //自己一个 for(int j=1;j<i;j++) { if(a[i]>a[j]) //可以和前面的数构成上升子序列 { f[i]=max(f[i],f[j]+a[i]); } } } int ans=0; for(int i=1;i<=n;i++) //枚举每个位置 { ans=max(ans,f[i]); } cout<<ans; return 0; }
- 1
Information
- ID
- 981
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 3
- Tags
- (None)
- # Submissions
- 18
- Accepted
- 7
- Uploaded By