【算法刷题】蓝桥杯:多次变化(位运算性质 + 贪心校验)

发布时间:2026/10/7 18:37:57

【算法刷题】蓝桥杯:多次变化(位运算性质 + 贪心校验) 【算法刷题】蓝桥杯多次变化位运算性质 贪心校验 题目链接与描述题目名称多次变化题目链接蓝桥云课 - 多次变化数据规模1 ≤ n ≤ 10 5 1 \le n \le 10^51≤n≤1051 ≤ a r r i , n u m s i ≤ 10 5 1 \le arr_i, nums_i \le 10^51≤arri​,numsi​≤105核心问题给定长度为n nn的数组a r r arrarr和n u m s numsnums每次可挑连续 3 个数a , b , c a, b, ca,b,c若满足算式条件即可任意交换这三者的顺序。问能否将a r r arrarr转化为n u m s numsnums若能求对应位置差值的绝对值之和∑ i 0 n − 1 ∣ n u m s i − a r r i ∣ \sum_{i0}^{n-1} |nums_i - arr_i|∑i0n−1​∣numsi​−arri​∣若不能输出-1。 题目条件深度拆解为什么看不懂题目给出的原始条件是( ( a ∣ b ) ( a b ) ) m o d 2 c m o d 2 ((a \mid b) (a \ \ \ b)) \bmod 2 c \bmod 2((a∣b)(ab))mod2cmod21. 利用位运算恒等式化简根据计算机基础中的位运算恒等式( a ∣ b ) ( a b ) a b (a \mid b) (a \ \ \ b) a b(a∣b)(ab)ab直观理解按位或( a ∣ b ) (a \mid b)(a∣b)收集了两者出现过的所有1按位与( a b ) (a \ \ \ b)(ab)补上了重叠出现的1加起来正好等于普通的数值加法a b a bab。2. 转换成奇偶性判定将恒等式代入条件式子瞬间简化为( a b ) m o d 2 c m o d 2 (a b) \bmod 2 c \bmod 2(ab)mod2cmod2这说明只要( a b ) (a b)(ab)的奇偶性与c cc的奇偶性相同这 3 个连续的数就能任意交换顺序。分析奇偶组合奇 奇 偶→ \rightarrow→需要c cc是偶数组合奇, 奇, 偶偶 偶 偶→ \rightarrow→需要c cc是偶数组合偶, 偶, 偶奇 偶 奇→ \rightarrow→需要c cc是奇数组合奇, 偶, 奇3. 结论无条件自由重排只要数组里不是极致特殊的极端情况通常连续三个数的奇偶性都能自然凑出上述组合通过类似于冒泡排序的多次传导交换数组中的每一个元素都可以被挪动到任意位置。因此只要a r r arrarr和n u m s numsnums包含的元素种类与数量完全一致就一定能够转换成功 解题步骤备份与排序备份原始数组并将备份数组升序排序。可行性判断比较排序后的两个数组若有任何一位不相等a[i] ! b[i]说明元素对不上直接输出-1并结束程序。代价计算若元素完全一致无需考虑中间具体的交换过程直接计算未排序的原始数组在对应位置上的绝对值差值之和cost ∑ i 0 n − 1 ∣ n u m s [ i ] − a r r [ i ] ∣ \text{cost} \sum_{i0}^{n-1} |nums[i] - arr[i]|costi0∑n−1​∣nums[i]−arr[i]∣❌ 常见踩坑点数组未分配空间声明vectorint b;后未指定大小直接cin b[i]会导致内存越界崩溃Segmentation Fault。必须写成vectorlong long b(n);。算错代价的数组不能拿排序后的数组去算abs(a[i] - b[i])排序后的数组只用来校验元素一致性计算最终代价必须使用原始输入顺序的数组abs(nums[i] - arr[i])。数据溢出代价累加值可能超过2 31 − 1 2^{31}-1231−1必须使用long long存储。 最终 AC 代码 (C)#includebits/stdc.husingnamespacestd;intmain(){// 开启快速 I/Oios::sync_with_stdio(false);cin.tie(nullptr);intn;if(!(cinn))return0;vectorlonglonga(n),b(n);for(inti0;in;i)cina[i];for(inti0;in;i)cinb[i];// 1. 备份原数组vectorlonglongarra;vectorlonglongnumb;// 2. 对备份数组排序用于校验sort(arr.begin(),arr.end());sort(num.begin(),num.end());// 3. 检查元素是否完全匹配for(inti0;in;i){if(arr[i]!num[i]){cout-1\n;return0;// 无法转换直接退出}}// 4. 元素一致用原数组计算初始对应位置的代价和longlongsum0;for(inti0;in;i){sumabs(a[i]-b[i]);}coutsum\n;return0;}⏱️ 复杂度分析时间复杂度O ( n log ⁡ n ) \mathcal{O}(n \log n)O(nlogn)主要瓶颈在于对数组进行排序。对于n 10 5 n 10^5n105计算量约为1.7 × 10 6 1.7 \times 10^61.7×106次耗时仅几毫秒轻松 AC。空间复杂度O ( n ) \mathcal{O}(n)O(n)用于存储原数组及备份数组。
延伸阅读

更多相关文章

2026/10/6 18:23:29

领克01全域安全理念解析:从被动防御到主动守护的汽车安全进化

1. 从“被动防御”到“主动守护”:领克01安全理念的底层逻辑 聊到汽车安全,很多人的第一反应还是“这车钢板厚不厚”、“有几个气囊”、“碰撞测试几颗星”。这没错,但这是最基础、最被动的安全。就像我们以前买防盗门,只看钢板厚…

2026/10/6 18:26:22

汽车核心零部件更换周期全解析:告别盲开,科学养车指南

1. 从“坏了再换”到“按时更换”:一个被忽视的养车逻辑 很多车主朋友,包括我自己刚开车那会儿,都信奉一个朴素的养车原则: “没坏就不用换” 。听起来很省钱,很实在,对吧?直到我的车在高速上…

2026/10/7 18:35:40

技术面试准备:从算法到系统设计的全方位指南

1. 面试题学习的核心价值与误区面试题学习从来都不是简单的刷题背答案。我见过太多候选人把LeetCode刷穿却在实际面试中翻车,也遇到过基础知识扎实但缺乏解题思路的求职者。真正有效的面试准备,应该是知识体系、解题思维和表达能力的三重修炼。面试题本质…

2026/10/7 18:36:52

王者荣耀BqLog日志组件:环形队列与自适应数据总线设计解析

1. 从一条日志的旅程说起:为什么BqLog值得拆开看 王者荣耀这种量级的移动端应用,后台日志系统每天要吞下的数据量是相当夸张的。一局对战里,英雄技能释放、伤害结算、网络同步、帧率波动、内存快照、异常堆栈,这些信息都要被记录下…

2026/10/7 18:36:52

AI Agent工程实现精要:七要素与七个关键决策点

先交代一下背景。AI Agent 这个名词最近火得不行,几乎每场技术分享都会有人问“你们到底怎么落地 Agent 的”。问多了我发现一个现象:很多人把 Agent 等同于“用大模型调工具”,搭个 demo 能跑就以为完事了,结果一放到真实业务里&…

2026/10/7 18:36:52

ESP32C3 mini WiFi重启?供电不足的排查与电容加固方案

先说结论:如果你手里的 ESP32C3 mini 板子一开 WiFi 就重启,或者插上 USB 之后跑一会儿就反复循环,十有八九不是代码写崩了,也不是板子坏了,而是供电不足。 ESP32C3 mini 这块板子便宜、小巧、集成度高,做…

2026/10/7 18:36:52

从零搭建 OpenClaw:用 TaoToken 统一 Key 让数字小龙虾自己干活

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 18:31:51

LTspice电压源设置全攻略:从直流到正弦波、脉冲与PWL一次讲透

LTspice电压源设置,这算是所有仿真里最基础也最绕不开的一关。不管你后面是做电源、放大器、滤波器,还是给单片机ADC前端做信号调理,只要你在LTspice里画原理图,第一件事基本都是放一个电压源。我见过不少刚上手的朋友卡在这里&am…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/7 8:18:33

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/6 17:46:51

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

ESP32免重刷固件:浏览器直接修改NVS键值实现WiFi配置更新

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

SAP HANA查询结果导出CSV:避开乱码、性能与权限的实用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

数字后端Placement阶段Density与Congestion控制实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑