【HDOJ】1024 Max Sum Plus Plus

经典DP,但是各种TLE、RE,还是C写的。

#include <stdio.h>

#define MAXNUM 1000006
#define INF    0xffffffffffffffff

int mymax(int a, int b) {
    return a>b ? a:b;
}

int cur[MAXNUM];
int pre[MAXNUM];
int num[MAXNUM];

int main() {

    int i, j;
    long long cur_max;
    int n, m;

    while (scanf("%d %d", &m, &n) != EOF) {

        memset(num, 0, sizeof(num));
        memset(pre, 0, sizeof(pre));
        memset(cur, 0, sizeof(cur));

        for (i=1; i<=n; ++i)
            scanf("%d", &num[i]);

        for (i=1; i<=m; ++i) {
            cur_max = INF;
            for (j=i; j<=n; ++j) {
                cur[j] = mymax(cur[j-1], pre[j-1])+num[j];
                pre[j-1] = cur_max;
                if (cur[j] > cur_max)
                    cur_max = cur[j];
            }
        }

        printf("%lld\n", cur_max);
    }

    return 0;
}

 

posted on 2014-03-04 17:20  Bombe  阅读(139)  评论(0)    收藏  举报

导航