先上题目
Time Limit: 2000/1000 MS
(Java/Others) Memory Limit: 65536/32768 K
(Java/Others)
Total Submission(s): 1186 Accepted
Submission(s): 591
1 #include <cstdio> 2 #include <cstring> 3 #define max(x,y) (x >= y ? x : y) 4 #define MAX 1002 5 #define LL long long 6 using namespace std; 7 8 LL a[MAX],sum[MAX],l[22]; 9 LL dp[22][MAX]; 10 11 int main() 12 { 13 int n,m,st; 14 //freopen("data.txt","r",stdin); 15 while(scanf("%d",&n),n){ 16 scanf("%d",&m); 17 for(int i=1;i<=m;i++) scanf("%I64d",&l[i]); 18 sum[0]=0; 19 for(int i=1;i<=n;i++){ 20 scanf("%I64d",&a[i]); 21 sum[i]=sum[i-1]+a[i]; 22 } 23 memset(dp,0,sizeof(dp)); 24 st=0; 25 for(int i=1;i<=m;i++){ 26 st+=l[i]; 27 for(int j=st;j<=n;j++){ 28 dp[i][j]=max(dp[i][j-1],dp[i-1][j-l[i]]+(sum[j]-sum[j-l[i]])); 29 } 30 } 31 printf("%I64d\n",dp[m][n]); 32 } 33 return 0; 34 }
HDU - 1244 - Max Sum Plus Plus Plus,布布扣,bubuko.com
HDU - 1244 - Max Sum Plus Plus Plus
原文:http://www.cnblogs.com/sineatos/p/3660226.html