为什么我的代码超出了时间限制?

时间:2015-05-30 10:39:51

标签: java

为什么我的代码超出了ans的时间限制? 我在CodeChef上尝试了这个问题。我的逻辑是正确的,但我的答案是显示超出时限,我不知道为什么?

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 个答案:

答案 0 :(得分:1)

请正确阅读问题 -

  

Rupsa最近开始在Chef下实习。他给了她N种不同数量A1,A2,......,AN的成分来储存它。但由于她懒得安排她们,所以把它们都放在一个储物盒里。

     

Chef提出了一个新配方并决定准备它。他要求Rupsa为这道菜提供两种每种类型的成分。但当她去检索食材时,她意识到她一次只能从盒子里挑选一件物品,并且只有在她拿出它之后才能知道它的类型。挑选的物品不会放回包里。

     

她懒惰,想要知道在最坏的情况下她需要从盒子中挑选物品的最大次数,以确保她至少得到每种类型成分的两个单位。如果无法以这种方式挑选物品,请打印-1。

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