AcWing 1016. 最大上升子序列和
原题链接
简单
作者:
rushhhhh
,
2021-02-22 14:14:48
,
所有人可见
,
阅读 284
#include <iostream>
using namespace std;
/*
状态表示f[i]
集合:以f[i]结尾的上升子序列的和
属性:最大值,max
状态计算
if(a[i] > a[j])
f[i] = max(f[j], a[i] + f[j])
*/
const int N = 1010;
int n;
int f[N], a[N];
int main()
{
cin >> n;
for(int i=0; i<n; i++)
{
cin >> a[i];
f[i] = a[i];
}
for(int i=0; i<n; i++)
for(int j=0; j<i; j++)
if(a[i] > a[j])
f[i] = max(f[i], f[j] + a[i]);
int ans = -1;
for (int i = 0; i < n; ++i)
ans = max(ans, f[i]);
cout << ans;
return 0;
}