ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CF1162E Thanos Nim

2022-05-03 19:03:12  阅读:161  来源: 互联网

标签:堆数 frac Nim CF1162E 石子 个数 Thanos 我们 不为


CF1162E Thanos Nim

Problem - 1162E - Codeforces

大概是一篇迟到了13个月的题解?

第二次做到了这道题,上一次做到的时候还刚刚入门,啥也不懂,听学长讲的题解更是听不明白。今天又一次幸运的遇到了这道题,终于可以靠着自己的思考稍微讲一讲自己的思路了。

大致题意

​ 有\(n\)堆石子,每一次Alice和Bob需要选择\(\frac{n}{2}\)堆石子,分别移除任意多个,谁先无法进行操作则被认为输掉游戏

解题思路

​ 经过思考可以得到一个显然的结论:谁先使石子堆数减少,那么他必然会输掉游戏。原因简单,假设减少后的石子堆数为\(t\),\(t < n\),对方将任意\(\frac{n}{2}\)堆移完,那么剩下\(t - \frac{n}{2} < \frac{n}{2}\),无法继续操作。

得到这一点后,我们继续思考,什么时候我们不得不完全移除一堆石子?

​ 我们先考虑比较简单的情况,一堆石子里面只有1,和一些大于1的数(如果都大于1,显然可以继续操作直到出现这种情况)

​ 当剩下的 个数不为1的石子堆数 小于一半时,我们无论怎么选择,都需要选择一堆个数为1的石子,将其移除,然后输掉游戏。否则的话,我们就可以选择那些个数不为1的石子,将它们的个数变为1,这样操作以后,个数不为1的石子数量必然小于一半,对方必输(原因同上)。

​ 从只包含1与其他数的情况往更大的数的情况推广,如果只包含2和其他数。当剩下的 个数不为2的石子堆数 小于一半时,我们必须选择一堆2将其变成1,同时我们注意到,这样操作完后,我们的剩下不为1的堆数大于一半,就是我们上一段讨论过的情形,是对方的必胜态,即我们必败太。反之同理,个数不为2的石子堆数 大与一半时,我们把他们都变成2,对方必输。

​ 以此类推,我们可以发现一条公共的规律,对于所有数量中最小的数,如果他的出现次数大于\(\frac{n}{2}\),则先手胜利,否则后手胜利。于是这道题就做完了。


​ 这个博弈思路还有一种理解方式就是可以理解为“不要先让最小值减小”,但是写的时候想了很久这个思路该怎么证明他和必胜策略的关联性,最终感觉想的有点乱于是作罢,就我自己而言,感觉还是从简单情况推广比较好理解。

​ 其实并不是很擅长博弈类的题目,所以讲的可能并不是很严谨,如果有错误敬请指出。

标签:堆数,frac,Nim,CF1162E,石子,个数,Thanos,我们,不为
来源: https://www.cnblogs.com/iceyz/p/16219017.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有