题目大意:
给定一个起始数 x 给定一个目标数 t 然后给定一个数组
通过对起始数对数组的操作来判断是哪个(x | x + 3)
思路:
首先想的是暴力枚举每一种结果但是很快会发现暴力解决不了时间复杂度为O(2 ^ (1e5)),但是我们发现按位与与加法对最后一位二进制数的影响是一样的,所以问题就变成了目标数操作后的与目标数的奇偶问题
#include<bits/stdc++.h>
#define int long long
using namespace std;
void sol()
{
int n , x , t;
cin >> n >> x >> t;
for(int i = 1; i <= n ; i ++)
{
int tt ;
cin >> tt;
x += tt;
}
if((x % 2) == (t % 2)) puts("Alice");
else puts("Bob");
}
signed main()
{
int kk ;
cin >> kk;
while(kk --) sol();
}