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

Re:坑爹啊!!不是搜索吗?why wa。。

Posted by 1292765944 at 2013-03-17 12:35:11 on Problem 4049
In Reply To:坑爹啊!!不是搜索吗?why wa。。 Posted by:zz_1215 at 2012-05-10 22:03:44
我也是WA死了==
> #include<iostream>
> #include<vector>
> #include<algorithm>
> #include<cstdio>
> #include<queue>
> #include<stack>
> #include<string>
> #include<map>
> #include<set>
> #include<cmath>
> #include<cassert>
> #include<cstring>
> #include<iomanip>
> using namespace std;
> 
> #define FOR(i,a,b)      for( int i = (a) ; i <= (b) ; i ++)
> #define FF(i,a)         for( int i = 0 ; i < (a) ; i ++)
> #define FFD(i,a)        for( int i = (a)-1 ; i >= 0 ; i --)
> #define S64(a)          scanf(in64,&a)
> #define SS(a)           scanf("%d",&a)
> #define LL(a)           ((a)<<1)
> #define RR(a)           (((a)<<1)+1)
> #define pb              push_back
> #define CL(Q)           while(!Q.empty())Q.pop()
> #define MM(name,what)   memset(name,what,sizeof(name))
> #define read            freopen("in.txt","r",stdin)
> #define write           freopen("out.txt","w",stdout)
> 
> const int inf = 0x3f3f3f3f;
> const i64 inf64 = 0x3f3f3f3f3f3f3f3fLL;
> const double oo = 10e9;
> const double eps = 1e-10;
> const double pi = acos(-1.0);
> 
> char a[6][6];
> string s;
> int sx,sy;
> 
> int num(int x,int y)
> {
>     return (x-1)*4+y;
> }
> 
> bool you(int x,int temp)
> {
>     return (x&(1<<temp));
> }
> 
> bool win(int x)
> {
>     int temp;
>     bool ok;
>     for(int u=1;u<=4;u++)
>     {
>         ok = true;
>         for(int k=1;k<=4;k++)
>         {
>             temp = num(u,k);
>             if(!you(x,temp))
>             {
>                 ok = false;
>                 break;
>             }
>         }
>         if(ok) return true;
>     }
> 
>     for(int k=1;k<=4;k++)
>     {
>         ok = true;
>         for(int u=1;u<=4;u++)
>         {
>             temp = num(u,k);
>             if(!you(x,temp))
>             {
>                 ok = false;
>                 break;
>             }
>         }
>         if(ok) return true;
>     }
>     ok = true;
>     for(int u=1;u<=4;u++)
>     {
>         temp = num(u,u);
>         if(!you(x,temp))
>         {
>             ok = false;
>             break;
>         }
>     }
>     if(ok) return true;
> 
>     ok = true;
>     for(int u=1;u<=4;u++)
>     {
>         temp = num(5-u,u);
>         if(!you(x,temp))
>         {
>             ok = false;
>             break;
>         }
>     }
>     if(ok) return true;
> 
>     return false;
> }
> 
> bool dfwin(int step,int x,int y)
> {
>     if(win(x)) return true;
>     if(win(y)) return false;
>     if(step == 17) return false;
> 
>     if(step%2)
>     {
>         for(int u=1;u<=16;u++)
>         {
>             if(!you(x,u) && !you(y,u))
>             {
>                 if(dfwin(step+1,x+(1<<u),y))
>                 {
>                     return true;
>                 }
>             }
>         }
>         return false;
>     }
>     else
>     {
>         for(int u=1;u<=16;u++)
>         {
>             if(!you(x,u) && !you(y,u))
>             {
>                 if(!dfwin(step+1,x,y+(1<<u)))
>                 {
>                     return false;
>                 }
>             }
>         }
>         return true;
>     }
> }
> 
> bool dflose(int step,int x,int y)
> {
>     if(win(x)) return false;
>     if(win(y)) return true;
>     if(step == 17) return false;
> 
>     if(step%2)
>     {
>         for(int u=1;u<=16;u++)
>         {
>             if(!you(x,u) && !you(y,u))
>             {
>                 if(dflose(step+1,x+(1<<u),y))
>                 {
>                     return true;
>                 }
>             }
>         }
>         return false;
>     }
>     else
>     {
>         for(int u=1;u<=16;u++)
>         {
>             if(!you(x,u)&&!you(y,u))
>             {
>                 if(!dflose(step+1,x,y+(1<<u)))
>                 {
>                     return false;
>                 }
>             }
>         }
>         return true;
>     }
> }
> 
> bool cap(int step,int x,int y)
> {
>     if(win(x) || win(y)) return false;
>     if(step == 17) return true;
>     if(step%2)
>     {
>         for(int u=1;u<=16;u++)
>         {
>             if(!you(x,u) && !you(y,u))
>             {
>                 if(cap(step+1,x+(1<<u),y))
>                 {
>                     return true;
>                 }
>             }
>         }
>         return false;
>     }
>     else
>     {
>         for(int u=1;u<=16;u++)
>         {
>             if(!you(x,u) && !you(y,u))
>             {
>                 if(!cap(step+1,x,y+(1<<u)))
>                 {
>                     return false;
>                 }
>             }
>         }
>         return true;
>     }
> }
> 
> bool start()
> {
>     int temp;
>     int x,y;
>     x = 0;
>     y = 0;
>     for(int u=1;u<=4;u++)
>     {
>         for(int k=1;k<=4;k++)
>         {
>             if(a[u][k]=='x')
>             {
>                 temp = num(u,k);
>                 x |= 1<<temp;
>             }
>             else if(a[u][k] == 'o')
>             {
>                 temp = num(u,k);
>                 y |= 1<<temp;
>             }
>         }
>     }
> 
>     int step = sx+sy+1;
> 
>     if(s=="LOSE")
>     {
>         return dflose(step,x,y);
>     }
>     else if(s=="WIN")
>     {
>         return dfwin(step,x,y);
>     }
>     else if(s=="TIE")
>     {
>         return cap(step,x,y);
>     }
> }
> 
> int main()
> {
>     int T;
>     cin>>T;
>     while(T--)
>     {
>         cin>>s;
>         sx =0;
>         sy= 0;
>         for(int i=1;i<=4;i++)
>         {
>             for(int j=1;j<=4;j++)
>             {
>                 cin>>a[i][j];
>                 if(a[i][j]=='x')
>                 {
>                     sx++;
>                 }
>                 else if(a[i][j]=='o')
>                 {
>                     sy++;
>                 }
>             }
>         }
>         if(start())
>         {
>             cout<<"YES"<<endl;
>         }
>         else
>         {
>             cout<<"NO"<<endl;
>         }
>     }
>     return 0;
> }

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