page怎么打开wordpress,站长查询seo是什么意思,中山网站建设策划方案,深圳手机商城网站设计F-一种异或游戏_牛客小白月赛80 (nowcoder.com)
思路#xff1a;
a[i]^b[j]k#xff0c;b[j]a[i]^k#xff0c;对于每个a[i]#xff0c;我们求a[i]^k,判断条件就变成了a[i]b[j];
对于Alice想赢#xff0c;就应该尽可能晚的出Bob手里有相同的牌#xff0c;这样的牌我记…F-一种异或游戏_牛客小白月赛80 (nowcoder.com)
思路
a[i]^b[j]kb[j]a[i]^k对于每个a[i]我们求a[i]^k,判断条件就变成了a[i]b[j];
对于Alice想赢就应该尽可能晚的出Bob手里有相同的牌这样的牌我记为cna
对于Bob想赢我们要尽可能保留Alice手里有的牌但对于每种牌不必全部保留只保留一张即可这样的牌我记为cnb。
当n-cnam-cnb,也就是说Alice会先出他想保留的牌一般是Bob赢但如果cna1只剩一张Alice出了这一张会直接结束游戏Alice赢。
当n-cnam-cnb时Bob会先出和Alice手里一样的的牌这种情况是Alice赢特俗情况是n-cnam-cnbcnb1cna1,这时候Bob会赢。
代码
#define _CRT_SECURE_NO_WARNINGS #includeiostream #includecstdio #includecstdlib #includestring #includecstring #includecmath #includectime #includealgorithm #includeutility #includestack #includequeue #includevector #includeset #includemath.h #includeunordered_map #includemap using namespace std; typedef long long LL; #define per(i,a,b) for(int ia;ib;i) #define ber(i,a,b) for(int ia;ib;i--) const int N 1e6 100; int n, k, m, x; int a[N]; int v[N], cnt, cna, cnb; int main() { cin n m k; per(i, 1, n) cin x, a[x^k]; per(i, 1, m) { cin x; if (v[x]) continue; if (a[x]) { cnb; cna a[x]; } v[x] 1; } if (n - cna m - cnb) { if (cna1) printf(Alice\n); else printf(Bob\n); } else { int cha n - cna - m cnb; if (cha 0cnb1cnacha1) printf(Bob\n); else printf(Alice\n); } return 0; }