发布时间:2026/7/17 19:54:27
题解:AcWing 239 奇偶游戏 本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。欢迎大家订阅我的专栏算法题解C与Python实现附上汇总贴算法竞赛备考冲刺必刷题C | 汇总【题目来源】AcWing239. 奇偶游戏 - AcWing题库【题目描述】小A AA和小B BB在玩一个游戏。首先小A AA写了一个由0 00和1 11组成的序列S SS长度为N NN。然后小B BB向小A AA提出了M MM个问题。在每个问题中小B BB指定两个数l ll和r rr小A AA回答S [ l ∼ r ] S[l∼r]S[l∼r]中有奇数个1 11还是偶数个1 11。机智的小B BB发现小A AA有可能在撒谎。例如小A AA曾经回答过S [ 1 ∼ 3 ] S[1∼3]S[1∼3]中有奇数个1 11S [ 4 ∼ 6 ] S[4∼6]S[4∼6]中有偶数个1 11现在又回答S [ 1 ∼ 6 ] S[1∼6]S[1∼6]中有偶数个1 11显然这是自相矛盾的。请你帮助小B BB检查这M MM个答案并指出在至少多少个回答之后可以确定小A AA一定在撒谎。即求出一个最小的k kk使得01 0101序列S SS满足第1 ∼ k 1∼k1∼k个回答但不满足第1 ∼ k 1 1∼k11∼k1个回答。【输入】第一行包含一个整数N NN表示01 0101序列长度。第二行包含一个整数M MM表示问题数量。接下来M MM行每行包含一组问答两个整数l ll和r rr以及回答even或odd用以描述S [ l ∼ r ] S[l∼r]S[l∼r]中有偶数个1 11还是奇数个1 11。【输出】输出一个整数k kk表示01 0101序列满足第1 ∼ k 1∼k1∼k个回答但不满足第1 ∼ k 1 1∼k11∼k1个回答如果01 0101序列满足所有回答则输出问题总数量。【输入样例】10 5 1 2 even 3 4 odd 5 6 even 1 6 even 7 10 odd【输出样例】3【核心思想】问题分析给定长度为N NN的 01 序列和M MM个区间奇偶性回答区间[ l , r ] [l, r][l,r]中 1 的个数为偶数或奇数求前多少个回答自洽第几个回答开始出现矛盾。这是一个带权并查集问题关键在于将区间奇偶性约束转化为前缀和节点之间的异或关系。算法选择带权并查集Extended Union-Find维护每个节点到根节点的异或值奇偶性支持O ( α ( n ) ) O(\alpha(n))O(α(n))的合并与查询前缀和转化区间[ l , r ] [l, r][l,r]中 1 的个数的奇偶性等价于前缀和s u m [ r ] sum[r]sum[r]与s u m [ l − 1 ] sum[l-1]sum[l−1]的奇偶性差异即s u m [ r ] ⊕ s u m [ l − 1 ] t sum[r] \oplus sum[l-1] tsum[r]⊕sum[l−1]t离散化Hash/Map下标范围大需要映射为连续编号关键步骤前缀和建模设s u m [ i ] sum[i]sum[i]为前i ii项中 1 的个数的前缀和则区间[ l , r ] [l, r][l,r]中 1 的个数的奇偶性为s u m [ r ] ⊕ s u m [ l − 1 ] sum[r] \oplus sum[l-1]sum[r]⊕sum[l−1]离散化使用unordered_map将l − 1 l-1l−1和r rr映射为连续编号因为l − 1 l-1l−1和r rr的范围可能达到10 9 10^9109初始化带权并查集p[i] id[i] 0$每个节点独立到自身的异或值为 0带权查找路径压缩递归查找根节点u find(p[x])更新d[x] ^ d[p[x]]使d[x]表示x xx到根节点的异或值p[x] u路径压缩处理每个回答( a , b , t ) (a, b, t)(a,b,t)其中a l − 1 , b r a l-1, b ral−1,br若a aa和b bb在同一集合检查d[a] ^ d[b] t若不等则前i − 1 i-1i−1个回答自洽第i ii个矛盾记录答案并退出若不在同一集合合并p[pa] pb设置权值d[pa] d[a] ^ d[b] ^ t保证合并后a aa到b bb的异或值为t tt时间/空间复杂度时间复杂度O ( M ⋅ α ( N ) ) O(M \cdot \alpha(N))O(M⋅α(N))其中α \alphaα为阿克曼函数反函数近似常数。每次查找或合并操作均摊O ( α ( N ) ) O(\alpha(N))O(α(N))空间复杂度O ( N ) O(N)O(N)并查集父节点数组、权值数组和离散化映射表带权并查集的核心思想异或关系传递通过维护每个节点到根节点的异或值快速查询任意两节点间的奇偶性关系路径压缩更新权值在路径压缩时利用异或的传递性d[x] ^ d[p[x]]更新到根的距离合并时设置权值合并两个集合时通过d[pa] d[a] ^ d[b] ^ t保证新集合内所有异或关系一致前缀和降维将区间问题转化为两个端点的前缀和关系是处理区间奇偶性/异或约束的经典技巧适用于带奇偶性约束的连通性判断、异或方程组、博弈公平性问题【算法标签】#并查集【代码详解】#includebits/stdc.husingnamespacestd;constintN200005;// 最大节点数离散化后最多 2*M5 个节点intn,m;// n: 序列长度输入值但随后被重置用于离散化计数, m: 问题数量intp[N],d[N];// p: 并查集父节点数组; d[x]: 节点 x 到父节点路径上的奇偶性异或值unordered_mapint,intS;// 离散化映射原始下标 - 连续编号// 离散化将原始下标映射为连续编号从1开始intget(intx){if(S.count(x)0)S[x]n;// 若该值未出现过分配新编号n 从0递增returnS[x];// 返回该下标对应的编号}// 带权并查集查找路径压缩同时维护到根节点的奇偶性关系intfind(intx){if(p[x]!x){intufind(p[x]);// 递归查找根节点d[x]^d[p[x]];// 更新 x 到根节点的奇偶性d[x] d[x] ^ d[父节点]p[x]u;// 路径压缩将 x 直接指向根节点}returnp[x];// 返回根节点}intmain(){cinnm;// 读入序列长度 N 和问题数量 Mfor(inti1;iN;i)p[i]i;// 初始化并查集每个节点自成一个集合注意用输入的N而非nn0;// 重置 n用于离散化计数intresm;// 默认答案若所有回答都自洽则输出 mfor(inti1;im;i){inta,b;string type;cinabtype;// 读入区间 [a, b] 和回答类型aget(a-1),bget(b);// 离散化将前缀和节点 (a-1) 和 b 映射为编号intt0;// t 0 表示 even偶数个1t 1 表示 odd奇数个1if(typeodd)t1;intpafind(a),pbfind(b);// 查找 a 和 b 的根节点if(papb)// 若 a 和 b 已在同一集合{// 检查奇偶性是否矛盾d[a]^d[b] 表示区间 [a,b] 中1的个数的奇偶性if((d[a]^d[b])!t){resi-1;// 前 i-1 个回答自洽第 i 个回答导致矛盾break;// 找到矛盾提前退出}}else// 若 a 和 b 不在同一集合合并{p[pa]pb;// 将 pa 的根指向 pb 的根// 设置 pa 到 pb 的奇偶性关系d[pa] d[a] ^ d[b] ^ t// 保证合并后d[a] ^ d[b] t即区间 [a,b] 中1的个数奇偶性为 td[pa]d[a]^d[b]^t;}}coutresendl;// 输出最多自洽的回答数量return0;}【运行结果】10 5 1 2 even 3 4 odd 5 6 even 1 6 even 7 10 odd 3

相关新闻

2026/7/17 19:49:27

2023职场必备技能:数字化工具与AI协同实战指南

1. 项目概述 "火爆全网的Skills"这个标题背后反映的是当前职场和生活中快速迭代的核心能力需求。作为从业十余年的职业发展顾问,我发现每隔3-5年就会出现一批新的"网红技能",它们往往与技术创新、社会变迁密切相关。2023年最值得关注…

2026/7/17 19:49:27

MinerU2.5:多模态大模型在文档解析中的突破与应用

1. MinerU2.5:文档解析领域的多模态大模型新标杆当我在处理一批跨国企业的混合格式文档时,传统OCR工具在复杂表格和多语言文本上的表现令人抓狂——直到遇到MinerU2.5。这个拥有1.2B参数的开源模型在GitHub上斩获46.1k星,其最新发布的2.5-Pro…

2026/7/17 19:49:27

古迪植物大战僵尸积木机关设计解析与拼搭体验测评

最近在玩具圈里,古迪积木的植物大战僵尸系列可以说是相当火爆。作为一个积木爱好者和植物大战僵尸的老玩家,我入手了这款60043机关场景套装第2弹。说实话,刚开始看到"机关场景"四个字时,我还在想是不是又是那种简单的推…

2026/7/17 20:54:54

LLM评估新范式:如何校准AI裁判以对齐人类偏好

1. 项目概述:当AI开始评估AI,我们如何相信它的判断?最近在跟进大语言模型评估这块的工作,伯克利那边发的一篇新论文让我眼前一亮。标题挺有意思,叫“如何‘验证验证者’?”,说白了,就…

2026/7/17 20:54:54

CH32X035芯片U盘固件更新方案与实现

1. CH32X035芯片与U盘固件更新概述CH32X035是南京沁恒微电子推出的一款基于RISC-V内核的32位通用微控制器,内置USB2.0全速控制器,这使其成为实现USB设备功能的理想选择。通过将其配置为USB大容量存储设备(Mass Storage Device,MSD…

2026/7/17 20:54:54

鸿蒙三方库 | harmony-utils之NetworkUtil默认网络与绑定网络详解

前言 在多网络环境下(如同时连接WiFi和蜂窝),了解默认网络和绑定网络的概念对网络管理很重要。pura/harmony-utils 的 NetworkUtil 封装了默认网络查询方法。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解&#xff0…

2026/7/17 20:54:54

2026年一个工具管所有项目?多功能集成项目管理工具了解一下

你数过自己电脑上装了多少个"协作工具"吗?上周帮一个 30 人的创业团队做工具盘点,数完之后所有人都沉默了——Slack 管聊天、Notion 管文档、Trello 管任务、Google Calendar 管日程、Toggl 管工时、GitHub 管代码、Figma 管设计、Zoom 管开会…

2026/7/17 20:54:54

OpenClaw+阿里云轻量服务器+飞书集成实战指南

1. 项目概述:为什么2026年OpenClaw阿里云计算巢飞书集成是当前最务实的AI自动化落地路径如果你正在找一个不用自己搭环境、不碰Docker、不调模型参数,但又能真正把大模型变成“会写代码、能查数据库、自动回消息”的业务助手的方案——那2026年阿里云轻量…

2026/7/17 20:49:53

突破尼龙印花瓶颈:免模压起皱浆如何重构纺织特种工艺的降本逻辑

一个反常识的行业真相 对于所谓“免模压起皱浆”这个品类,一开始我是持保留态度的。在纺织化工领域,任何试图打破物理定律的工艺简化,往往都伴随着性能上的妥协。模压起皱作为功能性面料处理的一道经典工序,怎么可能轻易被一瓶浆…

2026/7/17 5:59:06

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了心爱的歌曲&#…

2026/7/17 1:21:45

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境随着新能源汽车行业的快速发展,充电通信协议的标准化和测试验证变得尤为重要。GB/T 27930-2023作为中国智能充电协议的最新版本,对充电机与电动汽车之间的通信提出了更严格…

2026/7/17 7:39:19

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡 【免费下载链接】rtl8852be Realtek Linux WLAN Driver for RTL8852BE 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8852be 还在为Linux系统无法识别RTL8852BE Wi-Fi 6网卡而烦恼吗?&#x1f…

2026/7/17 0:04:23

BiSheng JDK-build性能调优:构建速度提升30%的优化策略

BiSheng JDK-build性能调优:构建速度提升30%的优化策略 【免费下载链接】bishengjdk-build BiSheng JDK build and test scripts - common across all releases/versions 项目地址: https://gitcode.com/openeuler/bishengjdk-build 前往项目官网免费下载&am…

2026/7/17 14:59:44

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…