「Luogu P5601」小D与笔试

题目链接

戳我

\(Solution\)

这道题官方题解的做法太复杂了,还需要扫字符串。

其实只需要两个\(map\)就好了.

一个\(map<string,stirng>\)用来记录题目一个题面的答案是什么
一个\(map<string,char>\)用来记录答案是\("A","B","C","D"\)中的哪个

然后直接输出就好了,详细见代码

#include<bits/stdc++.h>
#define rg register
#define file(x) freopen(x".in","r",stdin);freopen(x".out","w",stdout);
using namespace std;
int read(){
    int x=0,f=1;char c=getchar();
    while(c<'0'||c>'9') f=(c=='-')?-1:1,c=getchar();
    while(c>='0'&&c<='9') x=x*10+c-48,c=getchar();
    return f*x;
}
map<string,char> s;
map<string,string> ss;
string c,cc;
int main(){
    int n=read(),q=read();
    for(int i=1;i<=n;i++)
        cin>>c>>cc,ss[c]=cc;
    while(q--){
        cin>>c;
        for(int i=0;i<4;i++)
            cin>>cc,s[cc]=i+'A';
        cout<<s[ss[c]]<<endl;
        s.clear();
    }
}

猜你喜欢

转载自www.cnblogs.com/hbxblog/p/11750254.html