zoukankan      html  css  js  c++  java
  • 暴力解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");
                }
            }
        }
    }

  • 相关阅读:
    字符串练习题
    js
    百度商桥--提供网站与用户之间交流平台
    git从本地上传到码云
    命名单词
    swiper 点击切换,拖动切换后继续自动轮播
    ionic4创建新项目
    两个年月日相减,获取年数和年数及半年数
    微信小程序点击跳转出现背景
    列表数据进行左浮动造成页面空白一块,排版错位问题
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/6923146.html
Copyright © 2011-2022 走看看