题意:
在新年假期期间,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;
}
}