#include<string.h> #include<stdio.h> #include<iostream> using namespace std; const long long mod=1e9+7; const int MAXN = 1000005; int max(int a ,int b){ return a > b ? a : b; } int n; int num[1000005]; int dp[2][MAXN]; int rev; int temp; int ans; int m; int main(){ while(~scanf("%d" , &m)){ ans = -0x3f3f3f3f; scanf("%d" , &n); rev = 1; for(int i = 1 ; i <= n ; i ++){ scanf("%d" , &num[i]); } memset(dp[0],0,sizeof(dp[0])); memset(dp[1],0,sizeof(dp[1])); for(int i = 1 ; i <= m ; i ++){ ans = -0x3f3f3f3f; for(int j = i; j <= n ; j ++){ dp[1][j] = max(dp[1][j - 1] , dp[0][j - 1]) + num[j]; dp[0][j - 1] = ans; if(ans < dp[1][j]) ans = dp[1][j]; } } printf("%d\n" , ans); } return 0; }
hdu 1024 Max Sum Plus Plus (最大m子段和)
最新推荐文章于 2020-04-10 08:36:48 发布