[HDU-1024]Max Sum Plus Plus

来源:互联网 发布:无纸化会议软件定制 编辑:程序博客网 时间:2024/06/05 10:54



#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn = 1000000 + 10;const int INF = 0X7fffffff;int S[maxn];int dp[maxn][2];int main() {    int m, n;    while( scanf("%d%d", &m, &n)!=EOF ) {        for(int i=1; i<=n; ++i) {            cin >> S[i];        }        int ans=-INF;        for(int i=0; i<=n; ++i) {            for(int j=0; j<=m; ++j) {                dp[i][j] = 0;            }        }        for(int j=1; j<=m; ++j) {            int temp = -INF;            for(int i=j; i<=n; ++i) {                temp = max( temp, dp[i-1][(j-1)%2] );                if( i!=j ) {                    dp[i][j%2] = max( dp[i-1][j%2]+S[i], temp+S[i] );                }                else {                    dp[i][j%2] = temp + S[i];                }                if( j==m ) {                    ans = max( ans, dp[i][j%2] );                }            }        }        cout << ans << endl;    }    return 0;}


原创粉丝点击