标签:des style blog http color java os io
4 33A 2 33A 22 33 22 5559T 9993
Yes No Yes Yes
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
struct node
{
int Solo[20],num_Solo;
int Pair[20],num_Pair;
int Trio[20],num_Trio;
int Four[20],num_Four;
int Nuke;
}n[2];
void work(char s[],int d)
{
int len=strlen(s);
memset(&n[d],0,sizeof(n[0]));
n[d].num_Solo=len;
for(int i=0;i<len;i++)
{
if(s[i]>='3'&&s[i]<='9')
n[d].Solo[s[i]-'2']++;
else if(s[i]=='T') n[d].Solo[8]++;
else if(s[i]=='J') n[d].Solo[9]++;
else if(s[i]=='Q') n[d].Solo[10]++;
else if(s[i]=='K') n[d].Solo[11]++;
else if(s[i]=='A') n[d].Solo[12]++;
else if(s[i]=='2') n[d].Solo[13]++;
else if(s[i]=='X') n[d].Solo[14]++;
else if(s[i]=='Y') n[d].Solo[15]++;
}
for(int i=1;i<=13;i++)
{
if(n[d].Solo[i]>=2) n[d].Pair[i]++,n[d].num_Pair++;
if(n[d].Solo[i]>=3) n[d].Trio[i]++,n[d].num_Trio++;
if(n[d].Solo[i]>=4) n[d].Four[i]++,n[d].num_Four++;
}
if(n[d].Solo[14]&&n[d].Solo[15]) n[d].Nuke=1;
return;
}
bool solve()
{ //考虑双王的情况
if(n[0].Nuke) return true;
//一次能出去
if(n[0].num_Solo==1) return true;
if(n[0].num_Pair&&n[0].num_Solo==2) return true;
if(n[0].num_Trio&&n[0].num_Solo==3) return true;
if(n[0].num_Four&&n[0].num_Solo==4) return true;
if(n[0].num_Trio&&n[0].num_Solo==4) return true;
if(n[0].num_Trio&&n[0].num_Pair>=2&&n[0].num_Solo==5) return true;
if(n[0].num_Four&&n[0].num_Solo==6) return true;
//如果我不能一次出去,对方有最大的牌,无论我出什么都不行
if(n[1].Nuke) return false;
//考虑我有的牌的类型,对方没有的情况
//考虑对的情况
if(n[0].num_Pair&&!n[1].num_Pair) return true;
//考虑三个的情况
if(n[0].num_Trio&&!n[1].num_Trio) return true;
//考虑炸的情况
if(n[0].num_Four&&!n[1].num_Four) return true;
//考虑三带一的情况
if(n[0].num_Trio&&n[0].num_Solo>=4&&n[1].num_Solo<4&&!n[1].num_Four) return true;
//考虑三带二的情况
if(n[0].num_Trio&&n[0].num_Pair>=2&&n[1].num_Solo<5&&!n[1].num_Four) return true;
//考虑四带二的情况
if(n[0].num_Four&&n[0].num_Solo>=6&&n[1].num_Solo<6&&!n[1].num_Four) return true;
//考虑我有的牌的类型,对方也有的情况
int l=0,r=0;
//考虑出一张牌的情况
for(int i=1;i<=15;i++)
{
if(n[0].Solo[i]) l=i;
if(n[1].Solo[i]) r=i;
}
if(l>=r&&!n[1].num_Four) return true;
//考虑出两张牌的情况
if(n[0].num_Pair)
{
l=0;r=0;
for(int i=1;i<=13;i++)
{
if(n[0].Pair[i]) l=i;
if(n[1].Pair[i]) r=i;
}
if(l>=r&&!n[1].num_Four) return true;
}
//考虑出三张牌的情况
if(n[0].num_Trio)
{
l=0;r=0;
for(int i=1;i<=13;i++)
{
if(n[0].Trio[i]) l=i;
if(n[1].Trio[i]) r=i;
}
if(l>=r&&!n[1].num_Four) return true;
}
//考虑出四张牌的情况
if(n[0].num_Four)
{
l=0;r=0;
for(int i=1;i<=13;i++)
{
if(n[0].Four[i]) l=i;
if(n[1].Four[i]) r=i;
}
if(l>=r) return true;
}
return false;
}
int main()
{
char s1[25],s2[25];
int t;
scanf("%d",&t);
while(t--)
{
scanf("%s%s",s1,s2);
work(s1,0);
work(s2,1);
if(solve())
printf("Yes\n");
else printf("No\n");
}
return 0;
}
hdu 4930 Fighting the Landlords,布布扣,bubuko.com
hdu 4930 Fighting the Landlords
标签:des style blog http color java os io
原文地址:http://blog.csdn.net/knight_kaka/article/details/38434615