首页 > 其他分享 >【20省选十联测day10】Easy Win

【20省选十联测day10】Easy Win

时间:2024-09-26 16:00:49浏览次数:9  
标签:le 20 值域 奇偶性 异或 day10 Win SG ly

【20省选十联测day10】Easy Win

题意

原题链接

有 \(n\) 堆石子,\(n\le 5\times 10^5\),每堆石子有 \(a_i\) 个,\(a_i\le n\)。Alice 和 Bob 每次可以从,某一堆取至少 \(1\) 颗、至多 \(x\) 颗石子,不能取的失败。Alice 先手,问对于所有 \(1\le x\le n\),问谁胜利。

思路

对于一堆石子,计算它的 SG 函数,因为每个状态 \(m\) 可以到达状态 \(\max(0,m-x)\sim m-1\),所以 \(SG(m)=m\bmod (x+1)\)。对于 \(n\) 堆石子,全为 \(0\) 的必败态所有 SG 值 \(=0\),它们异或和也是 \(0\),对于异或和为 \(0\) 的情况,一次移动一定会使异或和非 \(0\),对于异或和非 \(0\) 的情况,因为所有数字的值都 \(\le x\),所以一定存在一种方案可以使异或和为 \(0\)。因此我们要求 \(\oplus SG(a_i)\),时间是 \(O(n^2)\) 的。

对于每个 \(x\) 都重新求一遍 \(\oplus a_i \bmod (x+1)\) 十分浪费时间。设 \(y=x+1\),求 \(\oplus a_i \bmod y\)。首先如果有两个相等的 \(a\),因为是异或所以直接消掉。因此我们假设所有 \(a_i\) 互不相同。把它拍到值域上,\(b_j\) 表示是否存在 \(a_i=j\)。

上面那个式子要取模,十分麻烦,我们把它变成 \(\oplus a_i - y \lfloor \frac{a_i}{y} \rfloor\),对于每个 \(y\),整除分块处理,块数加起来是个调和级数,是 \(n\log n\)。也就是我们把 \(j=[ly,ly+y)\) 的 \(b_j\) 分到一块,一块块求,每一块的 $ y \lfloor \frac{a_i}{y} \rfloor$ 相等,等于 \(ly\)。

求 \(j=[ly,ly+y)\) 每个 \(j-ly[b_j]\) 异或起来不好求,考虑拆开二进制位来算。

现在求上面这坨东西在第 \(k\) 位的贡献,即第 \(k\) 位 \(1\) 的数量奇偶性。\(ly-ly=0\),显然地。\((ly+2^k) -ly\) 在第 \(k\) 位 \(=1\),\((ly+2^k+2^k)-ly\) 在第 \(k\) 位 \(=0\),\((ly+2^k+2^k+2^k)-ly\) 在第 \(k\) 位 \(=1\),\(\dots\)

所以 \(j\) 在长度为 \(2^k\) 的值域从 \(ly\) 开始,交替为一段 \(0\)、一段 \(1\)。我们要求的 \([ly,ly+y)\),包含若干段完整的 \(2^k\),以及末尾可能截了一段不完整的。

那一段不完整的值域,在第 \(k\) 为的数字一定相同,所以直接前缀和判断这一段值域 \(b_j\) 的和的奇偶性就好。前面那若干个完整的段可以预处理。\(f_{i,j}\) 表示以值域上 \(i\) 开始,每 \(2^j\) 为一段,奇数段不计,偶数段的值域算上的 \(b\) 的前缀和。有 \(f_{i,j}\gets f_{i+2^{j+1},j}+sumb_{[i+2^j,i+2^{j+1})}\)。

没啦。

总结

先算 \(SG\) 函数,脱掉博弈论外壳。然后对求余整除分块一下,分类算。然后对于异或拆位算,算每一位 \(1\) 的个数奇偶性。然后预处理一下另类前缀和,然后算出另类区间和的奇偶性,然后求回异或和。时间复杂度 \(n\log^2 n\)。(整除分块和拆位各一个 \(\log\))

code

标签:le,20,值域,奇偶性,异或,day10,Win,SG,ly
From: https://www.cnblogs.com/liyixin0514/p/18433614

相关文章

  • 网络安全(黑客)2024小白自学必看
      ​一、怎样规划网络安全如果你是一个安全行业新人,我建议你先从网络安全或者Web安全/渗透测试这两个方向先学起一、是市场需求量高二、则是发展相对成熟入门比较容易 值得一提的是,学网络安全,是先网络后安全;学Web安全,也是先Web再有安全。安全不是独立存在的,而是建立......
  • 网络安全(黑客)2024小白自学必看
      ​一、怎样规划网络安全如果你是一个安全行业新人,我建议你先从网络安全或者Web安全/渗透测试这两个方向先学起一、是市场需求量高二、则是发展相对成熟入门比较容易 值得一提的是,学网络安全,是先网络后安全;学Web安全,也是先Web再有安全。安全不是独立存在的,而是建立......
  • DISM API(Deployment Image Servicing and Management API)是一个用于服务和管理 Window
    DISMAPI参考|MicrosoftLearn基本DISMAPI示例|MicrosoftLearn部署映像服务和管理(DISM)API|MicrosoftLearnDISMAPI(DeploymentImageServicingandManagementAPI)是一个用于服务和管理Windows映像文件的接口,特别用于处理Windows操作系统的安装、维护和更......
  • 2024年模式识别与图像分析国际学术会议(PRIA 2024) 2024 International Conference on P
    文章目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题六、咨询一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus2024年10月18-20日南京三、大会介绍2024年模式识别与图像分析国际学术会......
  • 2024年自动化、电气控制系统与设备国际学术会议(AECSE 2024) 2024 International Confer
    文章目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题六、咨询一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus2024年10月18-20日,南京三、大会介绍2024年自动化、电气控制系统与设备国际......
  • 2023.9.25 近期练习
    CF1261FXor-Set我们把\(A,B\)集合分别处理,把其拥有的区间放到字典树上,就会拆成\(O(n\logV)\)个区间。考虑其两两组合,每个区间都是形如前面若干位确定,后面\(x\)位任意。两个区间组合,就是取\(x\)更大的那个后面都是任意的,前面的若干位合并起来即可。但是这样就会有\(......
  • VB.net(C#同理)的bug:无法打开winForm,提示:文件中的类都不能进行设计,因此未能为该文件显示
    无法打开WinForm,新建一个WinForm也不行。错误提示:文件中的类都不能进行设计,因此未能为该文件显示设计器。严重性代码说明项目文件行禁止显示状态详细说明警告IDE0006加载项目时出错。已禁用某些项目功能,例如对失败项目和基于失败项目的其......
  • Windows 允许用户自定义和安装网络协议。以下是一些方法和步骤,帮助您在 Windows 中进
    Windows允许用户自定义和安装网络协议。以下是一些方法和步骤,帮助您在Windows中进行此操作。1.使用设备管理器安装协议您可以通过设备管理器来安装特定的网络协议:打开设备管理器:右键点击“开始”菜单,选择“设备管理器”。找到网络适配器:展开“网络适配器”部分。......
  • 2024年11月ACP敏捷认证报名时间及备考指南
    PMI-ACP®敏捷项目管理考试是一项国际认证,被全球范围内的企业和组织所认可。持有PMI-ACP®证可以帮助持证者在全球范围内寻找更好的职业机会,因此每年都有不少人报考PMI-ACP®考试,2024年11月PMI-ACP®考试即将到来,那么2024年11月PMI-ACP®考试报名日期是几号?怎么报名呢?一、2024年11......
  • 20240924_082514 c语言 switch分支结构
    语法演练体验switch的用法比较多路if一个个的比vs精准定位case穿透体验没有break的情况......