#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<stdio.h>
using namespace std;
int main()
{
int cn;
cin>>cn;
for(int i=0;i<cn;i++)
{
int n;
cin>>n;
vector<int> se;
for(int i=0;i<n;i++)
{
int a=0;
cin>>a;
se.push_back(a);
}
int res=-1001,m=-1001,front=0,end=0,l=0,r=0;
for(int i=0;i<se.size();i++)
{
if(m>=0)
{
m+=se[i];
end=i+1;
}
else
{
m=se[i];
front=i+1;
end=i+1;
}
if(res<m)
{
res=m;
l=front;
r=end;
}
}
cout<<"Case "<<i+1<<":"<<endl;
cout<<res<<" "<<l<<" "<<r<<endl;
if(i!=cn-1)
cout<<endl;
}
}
本题是典型的DP,优化后空间可以到达O(1).
HDOJ 1003 Max Sum
最新推荐文章于 2025-04-03 15:29:45 发布