题目链接:
https://codeforces.com/problemset/problem/1472/D
思路:
博弈题,一开始把想难了,wa了一发后,就去排序了。
从大到小排序即可,奇数的时候A拿,如果是偶数,sumA+=a[i],
偶数的时候B拿,如果是偶数,sumB+=a[i].
AC代码
//D. Even-Odd Game
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+10;
ll a[N],n,t;
ll cmp(ll x,ll y)
{
return x>y;
}
int main()
{
cin>>t;
while(t--)
{
cin>>n;
ll ji=0,ou=0,sumji=0,sumou=0;
for(int i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
}
sort(a+1,a+1+n,cmp);
ll sum1=0,sum2=0;
for(int i=1;i<=n;i++)
{
if(i%2==1)
{
if(a[i]%2==0)
{
sum1+=a[i];
}
}
else
{
if(a[i]%2==1)
{
sum2+=a[i];
}
}
}
if(sum1>sum2) cout<<"Alice"<<endl;
if(sum1==sum2) cout<<"Tie"<<endl;
if(sum1<sum2) cout<<"Bob"<<endl;
}
return 0;
}