为什么我得到超出我的这段代码的时间限制?

问题描述:

为什么我得到超过了我的这段代码的时间限制? 我在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]); 
      } 
} 
} 

请正确读取的问题 -

Rupsa最近厨师下开始实习。他分别给她N种不同数量的成分A1,A2,...,AN进行存储。但由于她懒惰地安排他们,她把他们都放在一个储物盒里。

厨师想出了一个新的配方,并决定准备。他要求Rupsa为这道菜取两种各种类型的配料。但是,当她去取回配料时,她意识到她只能从盒子中一次挑一件物品,并且只有在她挑出后才能知道它的类型。被拣选的物品不会放回包里。

她很懒,想知道在最坏的情况下她需要从箱子中挑选物品的最大次数,以确保她至少得到两种单位的每种成分。如果以这种方式挑选物品是不可能的,请打印-1。

你不处理的情况下,其中一个成分少于2个单位,在这种情况下,你应该打印-1。

+0

但是我正在考虑它 – ErrorrrDetector

+0

现在,如果您获得的时间限制超过,那将是因为您要多次浏览测试用例,并且要经历N次多次。一个更好的解决方案是完成所有工作,包括打印,并可能包括在单个循环中读取输入,尝试一下。 –