奇偶game
证明一下边带权做法的充分性
我们考虑异或和
对一个01序列,我们做一个异或前缀和,设为
对任何时刻的没有产生矛盾的并查集森林,我们随便给每个森林的根节点赋值一个0或1,那么其他所有节点的值也能够推导出来(注意中途不可能重复赋值,因为一个点只属于一个集合),如果序列中还剩余一些点没有赋值,就随便赋0或1,然后赋的值作为异或前缀和,就可以推导出来一个符合条件的01序列了
在讨论一下扩展域的做法,一般来说扩展域都可以这么理解
就像蓝书上面说的一样,
我们以前忽略的最严重的一点是,连接后的森林,他是完全对称的,就像下面这样(其中一个方框代表一个并查集集合)
那么对于一个还没有产生矛盾的森林,我们依次对每一排(注意是每一排)的其中一个赋值就好了,比如上图,我们考虑第一排,令
同边带权,这样对任意一个没有出现矛盾的森林都可以找到一个合法的序列(矛盾指
而合并时只用像蓝书说的那样合并就好了
这也解释了为什么代码里面只用判断一边关系就可以说明是否矛盾
update 2024.5.10
最后说一下这道题目其实就是在描述,可以将元素分为两类,给你一些条件问分法是否矛盾
然后可以用这个并查集做
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构