日常 ——[HD2021.X3] 取数游戏(game)

题目描述

给定一个包含 𝑛 个正整数的数列 {𝑎𝑛},小 𝐴 和小 𝐵 两人轮流进行取数游戏,小 𝐴 先手,每一轮一人从数列中选取一个数并将这个数从数列中删掉,如果小 𝐴 选择的数是偶数,则小 𝐴 的得分加上这个数,否则小 𝐴 不加分;如果小 𝐵 选择的数是奇数,则小 𝐵 的得分加上这个数,否则小 𝐵 不加分。

假设二人都采取最优策略,最后得分高的获胜,请输出获胜者,如果平局则需指明。

输入格式

第一行仅有一个正整数 𝑇(1≤𝑇≤104),表示测试数据组数;

接下来给出 𝑇T 组测试数据的具体信息,对于每组测试数据包含两行:

第一行仅有一个正整数 𝑛(1≤𝑛≤2×105);

第二行包含 𝑛n 个数,描述数列 {𝑎𝑛}。

测试数据保证各组数据中 𝑛 的总和不超过 2×105, 1≤𝑎𝑖≤2×109。

输出格式

共有 𝑇 行,依次对应每组测试数据的结果。 

如果小 𝐴 获胜则输出 A,如果小 𝐵 获胜则输出 B,若二人得分相同,则输出 C

代码

#include<bits/stdc++.h>
using namespace std;
long long a[100005];
int main(){
	long long n,t;
	cin>>t;
	for(int i=1;i<=t;i++){
		cin>>n;
		for(int j=1;j<=n;j++){
			cin>>a[j];
		}
		sort(a+1,a+n+1,greater<int>());
		long long aa=0,bb=0;
		for(int j=1;j<=n;j++){	
			if(j%2==1&&a[j]%2==0){
				aa+=a[j];
			}
			else if(j%2==0&&a[j]%2==1)bb+=a[j];
		}
		if(aa>bb)cout<<"A"<<endl;
		else if(aa<bb)cout<<"B"<<endl;
		else cout<<"C"<<endl;
	}
	return 0;
}

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值