-5
爲什麼我得到超過了我的這段代碼的時間限制? 我在CodeChef.My上試過這個問題的邏輯是正確的,但我的答案顯示超出了時間限制,我不知道爲什麼?爲什麼我得到超出我的這段代碼的時間限制?
http://www.codechef.com/problems/CHEFRP
package test;
import java.io.*;
import java.util.*;
public class Test
{
public static void main(String[] args)throws IOException{
int TESTCASES;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
TESTCASES=Integer.parseInt(br.readLine());
int b=2*TESTCASES,i=0,m,l;
int a;
String[] lines=new String[b];
int[] N=new int[TESTCASES];
int[][] Ai =new int[TESTCASES][100001];
int[] min=new int[TESTCASES];
int flag=0,minusonecase=-1;
int[] sum=new int[TESTCASES]
;
for(a=0;a<b;a++)
{
lines[a]=br.readLine();
if(a%2==0)
{
N[a/2]=Integer.parseInt(lines[a]);
}
if(a%2!=0)
{
StringTokenizer stz=new StringTokenizer(lines[a]);
for(l=0;l<100001;l++)
{
if(stz.countTokens()!=0)
{
Ai[((a-1)/2)][l]=Integer.parseInt(stz.nextToken());
}
else{
break;
}
}
}
}
for(a=0;a<TESTCASES;a++)
{
min[a]=Ai[a][0];
for(l=0;l<N[a];l++)
{
if(min[a]>Ai[a][l])
{
min[a]=Ai[a][l];
}
sum[a]=sum[a]+Ai[a][l];
}
sum[a]=sum[a]+2-min[a];
}
for(a=0;a<TESTCASES;a++)
{
for(l=0;l<N[a];l++)
{
if(Ai[a][l]==1)
{
System.out.println(minusonecase);
flag=1;
break;
}
}
if(flag==1)
{
flag=0;
continue;
}
System.out.println(sum[a]);
}
}
}
但是我正在考慮它 – ErrorrrDetector
現在,如果您獲得的時間限制超過,那將是因爲您要多次瀏覽測試用例,並且要經歷N次多次。一個更好的解決方案是完成所有工作,包括打印,並可能包括在單個循環中讀取輸入,嘗試一下。 –