题目描述
在第五人格职业联赛的每一场对局中,需要进行 Ban-Pick 流程。Ban 即角色禁用,Pick 即角色选用。
如试题 Winner 所述,游戏分为 求生者(SurvivorSurvivor) 与 监管者(HunterHunter) 两个阵营。求生者阵营 共有 n 名角色,监管者阵营 共有 m 名角色。
在某局比赛中,监管者 可以 ban(禁用) 掉 求生者阵营 5 名角色,求生者 可以 ban(禁用) 掉 监管者阵营 2 名角色。
每个角色,无论其属于求生者阵营还是监管者阵营,均可以使用 熟练度 来量化该阵营选手选择该角色的优先程度。选手一定会优先选择 熟练度 更高的角色进行游戏。
基于这样的考量,监管者选手 在进行 Ban 流程时,往往会选择 ban(禁用) 掉 求生者阵营熟练度最高 的若干名 求生者角色。同样,求生者选手 在进行 Ban 流程时,往往会选择 ban(禁用) 掉 监管者阵营熟练度最高 的若干名 监管者角色。
在 Ban 流程完成后,需要执行 Pick 流程。
如试题 Winner 所述,求生者选手 需要从 求生者阵营 中选择 4 名不同的角色,监管者选手 需要从 监管者阵营 中选择 1 名角色。
现在告诉你所有角色的名字、阵营与选手对其熟练度,请你给出双方阵营 Pick 的角色名字。
输入格式
输入共 n+m+1 行。
输入的第一行为两个整数 n,m,分别代表求生者阵营角色数和监管者阵营角色数。
接下来 n+m 行,首先为一个仅由英文字母组成的字符串,代表该角色的姓名;接下来为一个大写字符 H
或 S
,若为 H
,则代表该角色为监管者阵营,若为 S
,则代表该角色为求生者阵营;接下来一个正整数,代表该阵营选手对该角色的熟练度。上述字符串、大写字符、正整数之间由一个空格分隔。
输出格式
输出共 5 行。
输出的第一行为监管者阵营选择角色的角色名。
输出的第二到五行为求生者阵营选择角色的角色名,按照熟练度从高到低排列。
撕箓
首先建一个结构体,包括姓名和熟练度,下面在主程序里已经进行分区了,就不需要添加阵容变量,然后排序因为只会禁熟练度最高的几个(2和4)所以只需输出监管者(htr)的第3位和求生者(svr)的第6-9位就可以了。
禔碣
#include <bits/stdc++.h>
using namespace std;
#define ll long long
struct role{
string name;//姓名
ll exp;//熟练度
}svr[100005],htr[100005];
ll cmp(role x,role y){
return x.exp>y.exp;
}
int main()
{
ll n,m,ss=1,hh=1;
cin>>n>>m;
for (int i=1;i<=n+m;i++) {
string namel,campl;
ll expl;
cin>>namel>>campl>>expl;
if (campl=="S") {//判断是那个阵营的
svr[ss].name=namel;
svr[ss].exp=expl;
ss++;
}
else{
htr[hh].name=namel;
htr[hh].exp=expl;
hh++;
}
}
sort(svr+1,svr+1+n,cmp);//只需要浅浅的排序一下
sort(htr+1,htr+1+n,cmp);
cout<<htr[3].name<<endl;//然后输出没有被禁的最熟练的
cout<<svr[6].name<<endl;
cout<<svr[7].name<<endl;
cout<<svr[8].name<<endl;
cout<<svr[9].name<<endl;
return 0;
}
P.S.
有人知道“玩玩第”是什么吗?就是是“玩儿不玩儿第五”读快了。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/79124.html