hdu 1087 Super Jumping! Jumping! Jumping!

来源:互联网 发布:淘宝开店支付宝提现 编辑:程序博客网 时间:2024/06/17 23:25

传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1087

  • 题意:
    上升子序列的最大和.
    因为有 hdu1078 的基础, 很快就 a 掉了…

  • 思路:
    dp[i] = max(dp[arival(i)] + arry[i]);
    ans = max(dp[i]);

#include <stdio.h>#include <iostream>#include <cstring>using namespace std;const int MAX = 1111;const int INF = 1 << 31 - 1;int n, ans, ary[MAX], dp[MAX];int max(int a, int b) {    return a > b ? a : b;}int judge() {    ans = -INF;    for (int i = 1; i <= n; ++i)         dp[i] = ary[i];    for (int i = 0; i <= n; ++i) {        for (int j = i+1; j <= n; ++j) {            if (ary[j] <= ary[i])                continue;            dp[j] = max(dp[i] + ary[j], dp[j]);            ans = max(ans, dp[j]);        }    }    return ans;}int main() {    while (cin >> n && n) {        for (int i = 1; i <= n; ++i)            cin >> ary[i];        cout << judge() << endl;    }    return 0;}

2017-10-13

原创粉丝点击