Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

WA了50次终于过了啊!

Posted by mightyvoice at 2009-03-20 23:48:58 on Problem 1014
    把一个边界条件写到了后面一点的位置,网上所有的数据全部过了还是WA,郁闷了一天啊,最后绝望的试着把if(sum<0) return(false)写在前面了一点就过了,那个激动啊!感谢网上大牛们的数据。特此贴代码庆祝我逃离苦海,0ms的感觉好啊, 没有加%30也过了。

#include <cstdlib>
#include <iostream>

using namespace std;

int a[3001][7],n;

void input()
{ int i,j;
      for(i=1;i<=1001;i++)
     {  for(j=1;j<=6;j++) cin>>a[i][j];
            if(a[i][1]==0&&a[i][2]==0&&a[i][3]==0&&a[i][4]==0&&a[i][5]==0&&a[i][6]==0) break;
           for(j=1;j<=6;j++) a[i][j]=a[i][j]%30;
          }
          if(i==1) n=1;
          else
          n=i;
}

bool exist(int j,int sum,int i)
{  int k,l;
   if(sum==0) return(true);
   if(sum<0) return(false);
   else{ if(j==6)
         {  if(a[i][j]!=0&&sum%6==0&&sum/6<=a[i][j]) return(true);
            else return(false);
          }
               else {
                     for(l=j+1;l<=6;l++) if(a[i][l]!=0) break;
                     if(l>6)
                     {  if(sum%j==0&&sum/j<=a[i][j]) return(true);
                        else return(false);
                        }
                     else for(k=0;k<=a[i][j];k++) if(exist(l,sum-k*j,i))  return(true); 
                    }
              return(false);
         }
}
                     
int main(int argc, char *argv[])
{   int i,sum,j,k,l;
      input(); 
     if(n==1) cout<<"Collection #"<<n<<":"<<endl<<"Can't be divided."<<endl<<endl;
     else{ 
           n--;
     for(i=1;i<=n;i++)
       {  sum=0;
          for(j=1;j<=6;j++) sum+=a[i][j]*j;
            if(sum%2==1) 
             {  cout<<"Collection #"<<i<<":"<<endl<<"Can't be divided."<<endl<<endl;
                continue;
             }
            else {   sum=sum/2;
                     for(j=1;j<=6;j++) if(a[i][j]!=0) break;
                            if(exist(j,sum,i)) 
                            cout<<"Collection #"<<i<<":"<<endl<<"Can be divided."<<endl;
                            else 
                            cout<<"Collection #"<<i<<":"<<endl<<"Can't be divided."<<endl;
                   }
                  cout<<endl;
                   }
          }
    system("PAUSE");
    return EXIT_SUCCESS;
}


Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator