CF1472D Even-Odd Game

题意:

在新年假期期间,Alice 和 Bob 使用数组玩以下游戏 一种一种 的 n 整数:

  • 玩家轮流,爱丽丝先行动。
  • 玩家每回合选择任何元素并将其从数组中删除。
  • 如果 Alice 选择偶数,那么她会将其添加到她的分数中。如果选择的值为奇数,则 Alice 的分数不会改变。
  • 类似地,如果 Bob 选择奇数值,那么他会将其添加到他的分数中。如果选择的值为偶数,则 Bob 的分数不会改变。

 问最后谁分数高

题解:

具体不知道为什么,反正每回取最大的就过了(自己得不到也不能让对面得到);

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 200005;
int num[N];
bool bmp(int a,int b)
{
	return a > b;
}
int main()
{
	int t;
	cin >> t;
	while (t--)
	{
		memset(num, 0, sizeof num);
		int n;
		cin >> n;
		for (int i = 0; i < n; i++)
		{
			cin >> num[i];
		}
		sort(num, num + n, bmp);
		bool key = 0;
		ll a = 0, b = 0;
		for (int i = 0; i < n; i++)
		{
			if (!key)
			{
				key = !key;
				if(num[i]%2==0)
				a += num[i];
			}
			else
			{
				key = !key;
				if (num[i] % 2 != 0)
				b += num[i];
			}
		}
		if (a == b)
		{
			cout << "Tie" << endl;
		}
		else if (a < b)cout << "Bob" << endl;
		else
			cout << "Alice" << endl;
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值