洛谷[语言月赛202211] BAN-PICK

[语言月赛202211] BAN-PICK

题目描述

在第五人格职业联赛的每一场对局中,需要进行 Ban-Pick 流程。Ban 即角色禁用,Pick 即角色选用。

如试题 Winner 所述,游戏分为 求生者( Survivor \texttt{Survivor} Survivor监管者( Hunter \texttt {Hunter} Hunter 两个阵营。求生者阵营 共有 n n n 名角色,监管者阵营 共有 m m m 名角色。

在某局比赛中,监管者 可以 ban(禁用) 掉 求生者阵营 5 5 5 名角色,求生者 可以 ban(禁用) 掉 监管者阵营 2 2 2 名角色。

每个角色,无论其属于求生者阵营还是监管者阵营,均可以使用 熟练度 来量化该阵营选手选择该角色的优先程度。选手一定会优先选择 熟练度 更高的角色进行游戏。

基于这样的考量,监管者选手 在进行 Ban 流程时,往往会选择 ban(禁用) 掉 求生者阵营熟练度最高 的若干名 求生者角色。同样,求生者选手 在进行 Ban 流程时,往往会选择 ban(禁用) 掉 监管者阵营熟练度最高 的若干名 监管者角色

在 Ban 流程完成后,需要执行 Pick 流程。

如试题 Winner 所述,求生者选手 需要从 求生者阵营 中选择 4 4 4 名不同的角色,监管者选手 需要从 监管者阵营 中选择 1 1 1 名角色。

现在告诉你所有角色的名字、阵营与选手对其熟练度,请你给出双方阵营 Pick 的角色名字。

输入格式

输入共 n + m + 1 n+m+1 n+m+1 行。

输入的第一行为两个整数 n , m n,m n,m,分别代表求生者阵营角色数和监管者阵营角色数。

接下来 n + m n+m n+m 行,首先为一个仅由英文字母组成的字符串,代表该角色的姓名;接下来为一个大写字符 HS,若为 H,则代表该角色为监管者阵营,若为 S,则代表该角色为求生者阵营;接下来一个正整数,代表该阵营选手对该角色的熟练度。上述字符串、大写字符、正整数之间由一个空格分隔。

输出格式

输出共 5 5 5 行。

输出的第一行为监管者阵营选择角色的角色名。

输出的第二到五行为求生者阵营选择角色的角色名,按照熟练度从高到低排列。

样例 #1

样例输入 #1

9 3
Amily S 1
Lydia S 2
Lisa S 4
Beck H 1
Freddie S 5
Cliche S 6
Aesop S 7
Eli S 8
Norton S 9
Tiletower H 3
Yidhra H 2
Emma S 3

样例输出 #1

Beck
Lisa
Emma
Lydia
Amily

提示

输入输出样例 1 解释

求生者阵营角色: Amily,Lydia,Lisa,Freddie,Cliche,Aesop,Eli,Norton,Emma \texttt{Amily,Lydia,Lisa,Freddie,Cliche,Aesop,Eli,Norton,Emma} Amily,Lydia,Lisa,Freddie,Cliche,Aesop,Eli,Norton,Emma

监管者阵营角色: Beck,Tiletower,Yidhra \texttt{Beck,Tiletower,Yidhra} Beck,Tiletower,Yidhra

监管者选手将 ban 掉求生者阵营中角色 Norton,Eli,Aesop,Cliche,Freddie \texttt{Norton,Eli,Aesop,Cliche,Freddie} Norton,Eli,Aesop,Cliche,Freddie

求生者选手将 ban 掉监管者阵营中角色 Tiletower,Yidhra \texttt{Tiletower,Yidhra} Tiletower,Yidhra

数据规模与约定

对于前 20 % 20\% 20% 的数据, n = 9 , m = 3 n = 9, m = 3 n=9,m=3

对于前 50 % 50\% 50% 的数据,保证 n ≤ 1 0 3 , m ≤ 1 0 3 n \leq 10 ^ 3, m \leq 10 ^3 n103,m103

对于前 70 % 70\% 70% 的数据,保证 w i ≤ 1 0 9 w _ i \leq 10 ^ 9 wi109

对于所有数据,保证 9 ≤ n ≤ 1 0 5 , 3 ≤ m ≤ 1 0 5 9 \leq n \leq 10 ^ 5, 3 \leq m \leq 10 ^ 5 9n105,3m105,所有名字长度 ≤ 10 \leq 10 10。熟练度大小 w i w _ i wi 满足 1 ≤ w i ≤ 1 0 18 1 \leq w _ i \leq 10 ^ {18} 1wi1018。保证每个阵营中熟练度互不相同。保证名字仅有大写字母和小写字母构成。

思路:
定义两个结构体,一个存求生者一个存监管者,对他们按照熟练度降序排序,监管者ban了两个,监管者数组前两个不取,同理求生者数组一样。

#include<bits/stdc++.h>
using namespace std;
struct node{
	string name;
	long long n;
} arr[100005],arr2[100005];
int n,m; 
bool cmp(node a,node b){
	return a.n > b.n;
}
int main(){
	int n,m, h = 0, s1 = 0;
	cin >> n >> m;
		string  s;
		long long ns;
		char c;
	for(int i = 1; i <= n + m; i++){
		cin >> s >> c >> ns;
		if(c == 'H'){
			h++;
			arr2[h].name = s;
			arr2[h].n = ns; 
		} else {
			s1++;
			arr[s1].name = s;
			arr[s1].n = ns; 
		}
	} 
	
	sort(arr + 1, arr+s1+1, cmp);
	sort(arr2 + 1, arr2+h + 1, cmp);
	cout << arr2[3].name << "\n";
	for(int i = 6; i <= 9; i++)
		cout << arr[i].name << "\n";
 	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值