【map】HRBUST 1022 JiaoZhu and SC

本文介绍了一个简单的程序,用于预测星际争霸电子竞技比赛中不同选手之间的胜负关系。通过输入选手的种族和进行的比赛,程序能够判断出比赛的结果是胜利、失败还是平局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JiaoZhu and SC
Time Limit: 1000 MSMemory Limit: 65536 K
Total Submit: 974(363 users)Total Accepted: 387(329 users)Rating: Special Judge: No
Description

自从电子竞技在中国被认定为第99个正式体育项目,教主就投身其中,SC(StarCraft 星际争霸)他拿手的一款游戏,当然也有很多职业选手参与其中。
星际争霸中有3个种族:T(人族),P(神族),Z(虫族)而且每个玩家必须选择且只能选择一个种族来使用。
在职业电子竞技联赛中,每位职业选手都会固定使用某一个自己喜爱的种族。
在经过大量的比赛后,发现有如下的规律:
1.使用人族的选手总是能战胜虫族选手
2.使用虫族的选手总是能战胜神族选手
3.使用神族的选手总是能战胜人族选手
4.使用相同种族的选手对战总是产生平局
现在将告诉你每个选手的种族,并进行若干场比赛,要求你输出每场比赛的结果。

Input

本题只有一组测试数据
第一行:N M (1 <= N, M<= 10000),N代表选手的数目,M代表比赛的场数。
接下来N行,每行首先给出选手名字(玩家的名字只由大写、小写字母、数字组成,其中没有空格,最长的名字占10个字符)接着是他的种族(用T、P、Z表示)
接下来M行,每行代表一场比赛,首先给出选手A的名字,接着给出选手B的名字。

Output

对于每场比赛:
选手A胜利 输出"XiaoM Wins!"
选手B胜利 输出"TianT Wins!"
平局 输出"End in a draw!"

Sample Input
4 4
JiaoZhu T
Jaedong Z
Chadalt T
LMJ Z
JiaoZhu Chadalt
Jaedong LMJ
JiaoZhu LMJ
LMJ Chadalt
Sample Output
End in a draw!
End in a draw!
XiaoM Wins!
TianT Wins!
Hint

输入量巨大,建议使用scanf()与printf(),使用cin与cout可能会超时

Author
Chadalt


思路

简单map应用,直接把选手与其种族对应即可。

AC代码


#include<bits/stdc++.h>
using namespace std;

void solve(void)
{
    int n,m;
    cin>>n>>m;
    map<string,char>mp;
    for(int i = 0 ; i < m ; i++){
        string a;
        char b;
        cin>>a>>b;
        mp[a]=b;
    }
    for(int i = 0 ; i < m ; i++){
        string na,nb;
        cin>>na>>nb;
        if(mp[na]=='T'){
            if(mp[nb]=='T') cout<<"End in a draw!"<<endl;
            else if(mp[nb]=='P') cout<<"TianT Wins!"<<endl;
            else cout<<"XiaoM Wins!"<<endl;
        }
        else if(mp[na]=='Z'){
            if(mp[nb]=='T') cout<<"TianT Wins!"<<endl;
            else if(mp[nb]=='P') cout<<"XiaoM Wins!"<<endl;
            else cout<<"End in a draw!"<<endl;
        }
        else{
            if(mp[nb]=='T') cout<<"XiaoM Wins!"<<endl;
            else if(mp[nb]=='P') cout<<"End in a draw!"<<endl;
            else cout<<"TianT Wins!"<<endl;
        }
    }

}

int main(void)
{
    solve();
    return 0;
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

两米长弦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值