2015-05-30 62 views
-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]); 
      } 
} 
} 

回答

1

請正確讀取的問題 -

Rupsa最近廚師下開始實習。他分別給她N種不同數量的成分A1,A2,...,AN進行存儲。但由於她懶惰地安排他們,她把他們都放在一個儲物盒裏。

廚師想出了一個新的配方,並決定準備。他要求Rupsa爲這道菜取兩種各種類型的配料。但是,當她去取回配料時,她意識到她只能從盒子中一次挑一件物品,並且只有在她挑出後才能知道它的類型。被揀選的物品不會放回包裏。

她很懶,想知道在最壞的情況下她需要從箱子中挑選物品的最大次數,以確保她至少得到兩種單位的每種成分。如果以這種方式挑選物品是不可能的,請打印-1。

你不處理的情況下,其中一個成分少於2個單位,在這種情況下,你應該打印-1。

+0

但是我正在考慮它 – ErrorrrDetector

+0

現在,如果您獲得的時間限制超過,那將是因爲您要多次瀏覽測試用例,並且要經歷N次多次。一個更好的解決方案是完成所有工作,包括打印,並可能包括在單個循環中讀取輸入,嘗試一下。 –

相關問題