[洛谷] P5601 小D与笔试 题解

题目背景

小D是一位即将参加 ION 的 IO 选手,然而笔试题库中数量繁多的奇怪题目让他大伤脑筋,快来帮帮他!

题目描述

笔试题库可以抽象为 \(n\) 道题目,每道题目由题面和答案组成,都是一个字符串,保证所有题目题面互不相同。

为了检验小D背笔试的效果,教练进行了一次模拟考试,考试包含 \(q\) 道题目,每道题目都有 \(4\) 个选项,小D需要从 \(4\) 个选项中选出与答案相符的选项。

现在你需要帮助小D完成这场考试。

输入格式

第一行两个正整数 \(n, q\)

接下来 \(n\) 行,每行 \(2\) 个用空格分隔的字符串,表示这道题目的题面和答案。

接下来 \(q\) 行,每行 \(5\) 个用空格分隔的字符串,第一个字符串表示模拟考试中这道题目的题面,其余 \(4\) 个字符串按顺序分别为这道题目的选项A到选项D,保证选项各不相同。

输出格式

对于模拟考试中的每道题目,输出一个字符表示这道题目答案对应的选项,保证所有题目均有解。

样例

输入

3 4
decoak yes
duliuchutiren nonono
csps noiptg
decoak yes no qwq qaq
csps noiptg noippj noi cspj
decoak qwq qaq yesyes yes
duliuchutiren yes no nono nonono

输出

A
A
D
D

正文

本人致力于写蒟蒻(像我一样)能看懂的题解。

扫描二维码关注公众号,回复: 7675574 查看本文章

分析

模拟,挺水的,人人可做。

方法

纯模拟,边读边输大法好。

代码

#include<bits/stdc++.h>
int n,q;
struct an{
    std::string at;//题面
    std::string aa;//答案
}tm[105];//背的题面和答案。
struct zz{
    std::string t;//题面
    std::string a[5];//选项
}da[105];
char anssc[5]={'1','A','B','C','D'};//直接输出,免得乱搞。
int main()
{
    //freopen("in.txt","r",stdin);//测试专用
    //freopen("out.txt","w",stdout);
    std::cin>>n>>q;//读入
    for(int i=1;i<=n;i++)
    {
        std::cin>>tm[i].at>>tm[i].aa;
    }
    for(int i=1;i<=q;i++)
    {
        std::cin>>da[i].t;
        int cache=0;//临时存储数据
        for(int j=1;j<=n;j++)
        {
            if(da[i].t==tm[j].at)//找相同的题面
                cache=j;
        }
        for(int j=1;j<=4;j++)
        {
            std::cin>>da[i].a[j];
            if(da[i].a[j]==tm[cache].aa)//找答案
            {
                std::cout<<anssc[j]<<"\n";//记得回车
            }
        }
    }
    return 0;
 } 

猜你喜欢

转载自www.cnblogs.com/wasonliu/p/11758356.html
今日推荐