水了三道水DP题 最大M字段和的O(n)算法想了恩久没想出来.....
hit1760
#include<stdio.h>
#include<string.h>

int main()


{
int n;
while(scanf("%d", &n)==1 && n)

{
int hold=0, mxa=0;
int i, Num;
for(i=0; i<n; i++)

{
scanf("%d", &Num);
mxa=mxa>hold+Num ? mxa : hold+Num;
hold=hold+Num>0 ? hold+Num : 0;
}
if(mxa>0)printf("The maximum winning streak is %d.\n",mxa);
else printf("Losing streak.\n");
}
return 0;
}
PKU2479
#include<stdio.h>
#include<string.h>

int t, n;
int num[50010], mxa1[50010], mxa2[50010], hold, mxa;

int main()


{

scanf("%d", &t);
while(t--)

{
scanf("%d", &n);
int i;
mxa=0;
hold=0;
for(i=0; i<n; i++)

{
scanf("%d", &num[i]);

if(i==0 || mxa1[i-1]<=hold+num[i]) mxa1[i]=hold+num[i];
else if(i>0) mxa1[i]=mxa1[i-1];

if(hold+num[i]<=0) hold=0;
else hold+=num[i];
}
hold=0;
for(i=n-1; i>=0; i--)

{
if(i==n-1 || mxa2[i+1]<=hold+num[i]) mxa2[i]=hold+num[i];
else if(i<n-1) mxa2[i]=mxa2[i+1];

if(hold+num[i]<=0) hold=0;
else hold+=num[i];

if(i>0 && i<n-1 && mxa<mxa1[i]+mxa2[i+1] || i==n-2)
mxa=mxa1[i]+mxa2[i+1];
}
printf("%d\n", mxa);
}

return 0;
}

HDU1003
#include<stdio.h>
#include<string.h>




int main()


{
int t, k;
scanf("%d", &t);
for(k=1; k<=t; k++)

{
int n;
scanf("%d", &n);
int i, num, mxa=0, hold=0, ib=0, ie=0, ihb=0;
for(i=0; i<n; i++)

{
scanf("%d", &num);
if(i==0 || mxa<hold+num) mxa=hold+num, ib=ihb, ie=i;
if(hold+num<0) hold=0, ihb=i+1;
else hold+=num;
}
printf("Case %d:\n", k);
printf("%d %d %d\n", mxa, ib+1, ie+1);
if(k!=t)printf("\n");
}

return 0;

}