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;
	}
}

上一篇:【设计模式】里氏替换原则


下一篇:Dart 语言不换行输出