hdu1003求大神解答。我的代码总是Time Limit Exceeded

2024-11-27 03:48:02
推荐回答(1个)
回答1:

2重for,不超时才怪,n=10^5,n*n=10^10
这有一份代码。自己参考一下:
#include
#define N 100001
int s[N];
int main()
{
int t,n,te;
int i,k;
int le,ri,max,min;
scanf("%d",&t);
for(i=1;i<=t;i++)
{
scanf("%d%d",&n,&te);
s[1]=te;
for(k=2;k<=n;k++)
{
scanf("%d",&te);
s[k]=s[k-1]+te;
}
min=2147483647;max=-min;
for(k=1;k<=n;k++)
{
if(s[k-1] {
min=s[k-1];
te=k;
}
if(s[k]-min>max)
{
max=s[k]-min;
le=te;ri=k;
}
}
if(i==t) printf("Case %d:\n%d %d %d\n",i,max,le,ri);
else printf("Case %d:\n%d %d %d\n\n",i,max,le,ri);

}
return 0;
}