首页 > 代码库 > 暴力解hdu4930Fighting the Landlords

暴力解hdu4930Fighting the Landlords

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[20],b[20],na,nb;
bool cmp(int aa,int bb)
{
    return aa<bb;
}
void in()
{
    int i;
    char s1[20],s2[20];
    scanf("%s%s",s1,s2);
    na=strlen(s1);
    nb=strlen(s2);
    for(i=0;i<na;i++)
    {
        if(s1[i]=='T')
            a[i]=8;
        else if(s1[i]=='J')
            a[i]=9;
        else if(s1[i]=='Q')
            a[i]=10;
        else if(s1[i]=='K')
            a[i]=11;
        else if(s1[i]=='A')
            a[i]=12;
        else if(s1[i]=='2')
            a[i]=13;
        else if(s1[i]=='X')
            a[i]=14;
        else if(s1[i]=='Y')
            a[i]=15;
        else
            a[i]=s1[i]-'0'-2;
    }
    for(i=0;i<nb;i++)
    {
        if(s2[i]=='T')
            b[i]=8;
        else if(s2[i]=='J')
            b[i]=9;
        else if(s2[i]=='Q')
            b[i]=10;
        else if(s2[i]=='K')
            b[i]=11;
        else if(s2[i]=='A')
            b[i]=12;
        else if(s2[i]=='2')
            b[i]=13;
        else if(s2[i]=='X')
            b[i]=14;
        else if(s2[i]=='Y')
            b[i]=15;
        else
            b[i]=s2[i]-'0'-2;
    }
    sort(a,a+na,cmp);
    sort(b,b+nb,cmp);
}
bool j0()//0
{
    int i;
    if(na>6)
        return 0;
    if(na==1||na==0)
        return 1;
    if(na==2)
    {
        if(a[0]==a[1]||(a[0]==14&&a[1]==15))
            return 1;
    }
    else if(na==3)
    {
        if(a[0]==a[1]&&a[1]==a[2])
            return 1;
    }
    else if(na==4)
    {
        if(a[0]==a[1]&&a[1]==a[2])
            return 1;
        if(a[1]==a[2]&&a[2]==a[3])
            return 1;
    }
    else if(na==5)
    {
        if(a[0]==a[1]&&a[1]==a[2]&&a[3]==a[4])
            return 1;
        if(a[0]==a[1]&&a[2]==a[3]&&a[3]==a[4])
            return 1;
    }
    else
    {
        if(a[0]==a[1]&&a[1]==a[2]&&a[2]==a[3])
            return 1;
        if(a[1]==a[2]&&a[2]==a[3]&&a[3]==a[4])
            return 1;
        if(a[2]==a[3]&&a[3]==a[4]&&a[4]==a[5])
            return 1;
    }
    return 0;
}
int j1()//zz
{
    int i,j;

    if(a[na-1]==15&&a[na-2]==14)
        return 1;
    
    if(nb>1)
    {
        if(b[nb-1]==15&&b[nb-2]==14)
            return -1;
    }    
    
    for(i=na-1;i>2;i--)
        if(a[i]==a[i-1]&&a[i-1]==a[i-2]&&a[i-2]==a[i-3])
            break;

    for(j=nb-1;j>2;j--)
        if(b[j]==b[j-1]&&b[j-1]==b[j-2]&&b[j-2]==b[j-3])
            break;

    if(i>2&&j<3)
        return 1;
    
    if(j>2&&i<3)
        return -1;
        
    if(i>2&&j>2)
    {
        if(a[i]>b[j])
            return 1;
        if(a[i]<b[j])
            return -1;
    }
    
    return 0;
}
bool j2()//1
{
    return a[na-1]>=b[nb-1];
}
bool j3()//2
{
    int i,j;
    for(i=na-1;i>0;i--)
        if(a[i]==a[i-1])
            break;
    if(i==0)
        return 0;

    if(nb<2)
        return 1;
    for(j=nb-1;j>0;j--)
        if(b[j]==b[j-1])
            break;
    if(j==0)
        return 1;
        
    return a[i]>=b[j];
}
bool j4()//3
{
    int i,j,ii,jj;
    if(na<3)
        return 0;
    
    for(i=na-1;i>1;i--)
        if(a[i]==a[i-1]&&a[i-1]==a[i-2])
            break;
    
    if(i==1)
        return 0;
    
    for(j=nb-1;j>1;j--)
        if(b[j]==b[j-1]&&b[j-1]==b[j-2])
            break;
    
    if(j==1)
        return 1;
        
    if(a[i]>b[j])
        return 1;
        
    if(na>3&&nb==3)
        return 1;
        
    for(ii=na-1;ii>0;ii--)
    {
        if(a[ii]==a[i])
            continue;
        if(a[ii]==a[ii-1])
            break;
    }
    
    if(ii==0)
        return 0;
        
    for(jj=nb-1;jj>0;jj--)
    {
        if(b[jj]==b[j])
            continue;
        if(b[jj]==b[jj-1])
            break;
    }
            
    if(jj==0)
        return 1;
        
    return 0;
}
int main()
{
    int exp,t;
    scanf("%d",&exp);
    while(exp--)
    {
        in();
        if(na==0)
        {
            puts("Yes");
            continue;
        }
        else if(nb==0)
        {
            puts("No");
            continue;
        }
        if(j0())
            puts("Yes");
        else
        {
            t=j1();
            if(t==1)
                puts("Yes");
            else if(t==-1)
                puts("No");
            else
            {
                if(j2()||j3()||j4())
                    puts("Yes");
                else
                    puts("No");
            }
        }
    }
}