您的位置:首页 > 其它

hdu 1482

2015-11-12 09:35 288 查看
额,这个题原本也是挂到hash上的,结果又是水题

......

#include <iostream>
#include <cstring>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <algorithm>
using namespace std;

char a[100],l[30],r[30],w[30];
int vis[30];
void ori(){
for(int i=0;i<30;i++)vis[i]=4;//4 unknown 0 true +heavy -light
}
int main(){
int n;
scanf("%d",&n);
getchar();
while(n--){
ori();

int ans,k;
for(int i=0;i<3;i++){
gets(a);
sscanf(a,"%s%s%s",&l,&r,&w);
if(w[0]=='e'){
int len=strlen(l);
for(int j=0;j<len;j++){
int t1=l[j]-'A',t2=r[j]-'A';
vis[t1]=vis[t2]=0;
}
}
if(w[0]=='u'){
int len=strlen(l);
for(int j=0;j<len;j++){
int t1=l[j]-'A',t2=r[j]-'A';
if(vis[t1]!=0){
if(vis[t1]==4){
vis[t1]=-1;
}
else if(vis[t1]>0)vis[t1]=0;
else vis[t1]--;
}

if(vis[t2]!=0){
if(vis[t2]==4){
vis[t2]=1;
}
else if(vis[t2]<0)vis[t2]=0;
else vis[t2]++;
}

}

}

if(w[0]=='d'){
int len=strlen(l);
for(int j=0;j<len;j++){
int t1=l[j]-'A',t2=r[j]-'A';
if(vis[t1]!=0){
if(vis[t1]==4){
vis[t1]=1;
}
else if(vis[t1]<0)vis[t1]=0;
else vis[t1]++;
}

if(vis[t2]!=0){
if(vis[t2]==4){
vis[t2]=-1;
}
else if(vis[t2]>0)vis[t2]=0;
else vis[t2]--;
}

}

}

}
k=0;
for(int j=0;j<30;j++){
if(abs(vis[j])>k&&vis[j]!=4){
k=abs(vis[j]);
ans=j;
}
}

if(vis[ans]>0)

printf("%c is the counterfeit coin and it is light.\n",'A'+ans);

else

printf("%c is the counterfeit coin and it is heavy.\n",'A'+ans);

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: