hdu 1482

额,这个题原本也是挂到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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值