Always keep a|

Creeper_l

园龄:1年4个月粉丝:10关注:13

[ARC168B] Arbitrary Nim

原题链接:ARC168B

题意:有 \(n\) 堆石子,每堆有 \(a_{i}\) 个。每人每次可以取走其中一堆中的 \(x(1 \le x \le k)\) 个。求出一个最大的 \(k\) 使得先手必胜。无解输出 \(0\)\(k\) 可以取无限大输出 \(-1\)

一个经典 Nim 游戏的结论是:\(a_{i}\) 的异或和为 \(0\),则先手必败。但是现在限制了一次最多取 \(k\) 个,所以我们可以先把每一个 \(a_{i}\) 模上 \(k+1\),然后这就变成了一个经典博弈。

首先考虑如何判断 \(-1\) 的情况。显然,如果当前异或和已经不为 \(0\) 了,那么无论 \(k\) 取多大,异或值一定不为 \(0\),所以 \(k\) 可以取无限大。

再来考虑 \(0\) 的情况。我们会发现,两个相同的 \(a_{i}\) 无论模上多少最终的值都一定相同,即最终的异或和一定为 \(0\),所以我们可以先消除掉出现次数为偶数的数(因为异或和为 \(0\) 的数对最终的异或值没有影响),如果这时已经没有数了,说明最终的异或和一定为 \(0\),则先手必败。

现在就只剩下一些出现次数为奇数的数了,且这些数的异或和为 \(0\)(否则为上述 \(-1\) 的情况)。假设其中的最大值为 \(p\),其余值的异或和等于 \(q\),那么 \(p \oplus q = 0\)。这时将 \(k\) 设为 \(p-1\),将所有数模上 \(p\) 之后,只有 \(p\) 变为了 \(0\),其余数不变。因为 \(p \oplus q = 0\),所以 \(0 \oplus q \ne 0\),所以这时先手必胜,\(k\)\(p-1\)

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int MAXN = 3e5 + 10;
int n,a[MAXN],k = 0;
set <int> s;
signed main()
{
	cin >> n;
	for(int i = 1;i <= n;i++)
	{
		cin >> a[i];
		if(s.find(a[i]) != s.end()) s.erase(a[i]);
		else s.insert(a[i]);
		k ^= a[i];
	}
	if(k != 0) cout << "-1";
	else if(s.size() == 0) cout << "0";
	else cout << *--s.end() - 1;
	return 0;
} 

本文作者:Creeper_l

本文链接:https://www.cnblogs.com/Creeperl/p/17913387.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Creeper_l  阅读(14)  评论(0编辑  收藏  举报
  1. 1 イエスタデイ(翻自 Official髭男dism) 茶泡饭,春茶,kobasolo
  2. 2 世间美好与你环环相扣 柏松
  3. 3 True love tired
  4. 4 一笑江湖 (DJ弹鼓版) 闻人听書_
  5. 5 最好的安排 曲婉婷
  6. 6 星星在唱歌 司南
  7. 7 山川 李荣浩
  8. 8 On My Way Alan Walker
  9. 9 百战成诗 王者荣耀·100英雄官方群像献礼歌
  10. 10 雪 Distance Capper / 罗言
  11. 11 Edamame bbno$ / Rich Brian
  12. 12 半生雪 七叔-叶泽浩
  13. 13 Catch My Breath Kelly Clarkson
  14. 14 Love Is Gone SLANDER / Dylan Matthew
  15. 15 Endless Summer Alan Walker / Zak Abel
  16. 16 悬溺 葛东琪
  17. 17 风吹丹顶鹤 葛东琪
  18. 18 Normal No More TYSM
  19. 19 哪里都是你 队长
  20. 20 Stronger Kelly Clarkson
  21. 21 廖俊涛
  22. 22 消愁 毛不易
  23. 23 The Runner Yubik
  24. 24 踏山河 七叔-叶泽浩
  25. 25 Waiting For Love Avicii
  26. 26 在你的身边 盛哲
  27. 27 Dream It Possible Delacey
  28. 28 凄美地 郭顶
  29. 29 满天星辰不及你 ycc
  30. 30 侧脸 于果
  31. 31 阿拉斯加海湾 蓝心羽
  32. 32 虞兮叹 闻人听書_
  33. 33 离别开出花 就是南方凯
  34. 34 盗墓笔记·十年人间 李常超 (Lao乾妈)
侧脸 - 于果
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示