刚做完2593这道题目,就做了这道题,相同的代码就A过了
只不过把测试案例的个数增加了,这道题目依旧是求两个不相交子序列的和的最大值
输入
1 10 1 -1 2 2 3 -3 4 -4 5 -5输出
13
#include<stdio.h>
const int max=100010;
int main()
{
int n,a[max],maxl[max],m;
scanf("%d",&m);
while(m--)
{
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
int MAX=-9999999;
int maxsuml=0;
for(int i=0;i<n;i++)
{
maxsuml+=a[i];
if(maxsuml>MAX)
MAX=maxsuml;
if(maxsuml<0)
maxsuml=0;
maxl[i]=MAX;
}
MAX=-9999999;
int maxsumr=0,temp=-9999999;
for(int i=n-1;i>=1;i--)
{
maxsumr+=a[i];
if(maxsumr>MAX)
MAX=maxsumr;
if(maxsumr<0)
maxsumr=0;
if(temp<MAX+maxl[i-1])
temp=MAX+maxl[i-1];
}
printf("%d\n",temp);
}
return 0;
}