| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 42028 | Accepted: 13369 |
Description
Input
Output
Sample Input
1 ABCD EFGH even ABCI EFJK up ABIJ EFGH even
Sample Output
K is the counterfeit coin and it is light.
题意是从A到L的dollar,其中有一个跟他们其它的不同,可能是轻了也可能是重了。给了三个在秤上的关系,要你判断出哪一个是伪造的dollar,是轻是重。
做的时候还WA了几次,但AC之后觉得这个题真是水啊。。。不知道为什么只要自己好不容易A完之后就觉得这个题真的很水,为什么当时没有想到呢?就是这种感觉。
咳咳,因为这个题就A到L之中有问题嘛,数据量太小,导致枚举就OK了。所以从A开始就一个一个试吧,如果在even中的语句里出现了,那就排除它的嫌疑。在up语句中出现了,它的flag加3,代表可能是轻的标记。在down语句中出现了,它自己的flag加4,代表可能是重的标记。
然后对12个砝码标记完之后,有标记为1的排除,标记为7 10 11这样的排除,因为不可能出现一个砝码既轻又重的情况,然后找最独特的那一个就是伪造的砝码了。输出即可。
代码:
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#include <map>
using namespace std;
int num[15];
int Test,i,j,flag[15],sum=0;
string left_s[5],right_s[5],bala[5];
char temp_c;
void solve()
{
if(bala[1]=="up")
{
for(j=0;j<left_s[1].length();j++)
{
if(left_s[1][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"heavy."<<endl;
return ;
}
}
for(j=0;j<right_s[1].length();j++)
{
if(right_s[1][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"light."<<endl;
return;
}
}
}
if(bala[2]=="up")
{
for(j=0;j<left_s[2].length();j++)
{
if(left_s[2][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"heavy."<<endl;
return;
}
}
for(j=0;j<right_s[2].length();j++)
{
if(right_s[2][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"light."<<endl;
return;
}
}
}
if(bala[3]=="up")
{
for(j=0;j<left_s[3].length();j++)
{
if(left_s[3][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"heavy."<<endl;
return ;
}
}
for(j=0;j<right_s[3].length();j++)
{
if(right_s[3][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"light."<<endl;
return ;
}
}
}
if(bala[1]=="down")
{
for(j=0;j<left_s[1].length();j++)
{
if(left_s[1][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"light."<<endl;
return;
}
}
for(j=0;j<right_s[1].length();j++)
{
if(right_s[1][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"heavy."<<endl;
return ;
}
}
}
if(bala[2]=="down")
{
for(j=0;j<left_s[2].length();j++)
{
if(left_s[2][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"light."<<endl;
return;
}
}
for(j=0;j<right_s[2].length();j++)
{
if(right_s[2][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"heavy."<<endl;
return ;
}
}
}
if(bala[3]=="down")
{
for(j=0;j<left_s[3].length();j++)
{
if(left_s[3][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"light."<<endl;
return;
}
}
for(j=0;j<right_s[3].length();j++)
{
if(right_s[3][j]==temp_c)
{
sum=1;
cout<<temp_c<<" is the counterfeit coin and it is ";
cout<<"heavy."<<endl;
return ;
}
}
}
}
bool pend()
{
int pend_flag=0;
if(bala[1]=="up")
{
for(j=0;j<left_s[1].length();j++)
{
if(left_s[1][j]==temp_c)
{
pend_flag=1;
}
}
for(j=0;j<right_s[1].length();j++)
{
if(right_s[1][j]==temp_c)
{
pend_flag=1;
}
}
if(pend_flag==0)
return false;
}
if(bala[2]=="up")
{
for(j=0;j<left_s[2].length();j++)
{
if(left_s[2][j]==temp_c)
{
pend_flag=1;
}
}
for(j=0;j<right_s[2].length();j++)
{
if(right_s[2][j]==temp_c)
{
pend_flag=1;
}
}
if(pend_flag==0)
return false;
}
if(bala[3]=="up")
{
for(j=0;j<left_s[3].length();j++)
{
if(left_s[3][j]==temp_c)
{
pend_flag=1;
}
}
for(j=0;j<right_s[3].length();j++)
{
if(right_s[3][j]==temp_c)
{
pend_flag=1;
}
}
if(pend_flag==0)
return false;
}
if(bala[1]=="down")
{
for(j=0;j<left_s[1].length();j++)
{
if(left_s[1][j]==temp_c)
{
pend_flag=1;
}
}
for(j=0;j<right_s[1].length();j++)
{
if(right_s[1][j]==temp_c)
{
pend_flag=1;
}
}
if(pend_flag==0)
return false;
}
if(bala[2]=="down")
{
for(j=0;j<left_s[2].length();j++)
{
if(left_s[2][j]==temp_c)
{
pend_flag=1;
}
}
for(j=0;j<right_s[2].length();j++)
{
if(right_s[2][j]==temp_c)
{
pend_flag=1;
}
}
if(pend_flag==0)
return false;
}
if(bala[3]=="down")
{
for(j=0;j<left_s[3].length();j++)
{
if(left_s[3][j]==temp_c)
{
pend_flag=1;
}
}
for(j=0;j<right_s[3].length();j++)
{
if(right_s[3][j]==temp_c)
{
pend_flag=1;
}
}
if(pend_flag==0)
return false;
}
return true;
}
int main()
{
cin>>Test;
while(Test--)
{
memset(flag,0,sizeof(flag));
memset(num,0,sizeof(num));
sum=0;
for(i=1;i<=3;i++)
{
cin>>left_s[i]>>right_s[i]>>bala[i];
}
for(temp_c='A';temp_c<='L';temp_c++)
{
if(bala[1]=="even")
{
for(j=0;j<left_s[1].length();j++)
{
if(left_s[1][j]==temp_c)
{
flag[temp_c-'A']=1;
break;
}
}
for(j=0;j<right_s[1].length();j++)
{
if(right_s[1][j]==temp_c)
{
flag[temp_c-'A']=1;
break;
}
}
}
if(bala[2]=="even")
{
for(j=0;j<left_s[2].length();j++)
{
if(left_s[2][j]==temp_c)
{
flag[temp_c-'A']=1;
break;
}
}
for(j=0;j<right_s[2].length();j++)
{
if(right_s[2][j]==temp_c)
{
flag[temp_c-'A']=1;
break;
}
}
}
if(bala[3]=="even")
{
for(j=0;j<left_s[3].length();j++)
{
if(left_s[3][j]==temp_c)
{
flag[temp_c-'A']=1;
break;
}
}
for(j=0;j<right_s[3].length();j++)
{
if(right_s[3][j]==temp_c)
{
flag[temp_c-'A']=1;
break;
}
}
}
if(bala[1]=="up")
{
for(j=0;j<left_s[1].length();j++)
{
if(left_s[1][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] += 4;
}
}
for(j=0;j<right_s[1].length();j++)
{
if(right_s[1][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] += 3;
}
}
}
if(bala[2]=="up")
{
for(j=0;j<left_s[2].length();j++)
{
if(left_s[2][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] += 4;
}
}
for(j=0;j<right_s[2].length();j++)
{
if(right_s[2][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] += 3;
}
}
}
if(bala[3]=="up")
{
for(j=0;j<left_s[3].length();j++)
{
if(left_s[3][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] +=4;
}
}
for(j=0;j<right_s[3].length();j++)
{
if(right_s[3][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] +=3;
}
}
}
if(bala[1]=="down")
{
for(j=0;j<left_s[1].length();j++)
{
if(left_s[1][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] +=3;
}
}
for(j=0;j<right_s[1].length();j++)
{
if(right_s[1][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] +=4;
}
}
}
if(bala[2]=="down")
{
for(j=0;j<left_s[2].length();j++)
{
if(left_s[2][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] +=3;
}
}
for(j=0;j<right_s[2].length();j++)
{
if(right_s[2][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] +=4;
}
}
}
if(bala[3]=="down")
{
for(j=0;j<left_s[3].length();j++)
{
if(left_s[3][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] +=3;
}
}
for(j=0;j<right_s[3].length();j++)
{
if(right_s[3][j]==temp_c)
{
if(flag[temp_c-'A']==1)
continue;
else
flag[temp_c-'A'] +=4;
}
}
}
}
for(temp_c='A';temp_c<='L';temp_c++)
{
num[flag[temp_c-'A']]++;
}
for(i=0;i<=12;i++)
{
if(num[i]==1 && i!=7 && i!=10 && i!=11)
{
for(temp_c='A';temp_c<='L';temp_c++)
{
if(flag[temp_c-'A']==i)
{
if(pend())
{
solve();
}
}
}
}
}
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/u010885899/article/details/47144115