当前位置: 首页 > news >正文

蓝桥杯备赛:Day8-小苯的异或和

📚 算法笔记:小苯的异或和 (贡献法与位运算性质)

1. 题目简述

M-小苯的异或疑惑(hard)_北京信息科技大学第十五届程序设计竞赛(同步赛)

  • 场景:给定长度为n nn的数组a aa,计算所有满足1 ≤ i < j ≤ n 1 \le i < j \le n1i<jn( a i ⊕ a j ) (a_i \oplus a_j)(aiaj)的总异或和。
  • 核心挑战n nn高达2 × 10 5 2 \times 10^52×105,两两组合共有n ( n − 1 ) 2 \frac{n(n-1)}{2}2n(n1)对,暴力计算会达到2 × 10 10 2 \times 10^{10}2×1010次运算,必然超时。
  • 目标:在O ( n ) O(n)O(n)O ( n log ⁡ n ) O(n \log n)O(nlogn)时间内求出结果。

2. 核心代码 (C++ 实现)

#include <bits/stdc++.h> using namespace std; typedef long long ll; void solve() { int n; if(!(cin >> n)) return; vector<int> a(n); int total_xor = 0; for(int i = 0; i < n; i++) { cin >> a[i]; total_xor ^= a[i]; // 预先计算所有元素的异或总和 } // 关键逻辑判断: // 每个数 a[i] 会出现在 (n-1) 个组合中。 // 如果 (n-1) 是偶数,a[i] 异或偶数次抵消为 0。 // 如果 (n-1) 是奇数,a[i] 异或奇数次等价于异或 1 次。 if ((n - 1) % 2 == 0) { cout << 0 << endl; } else { cout << total_xor << endl; } } int main() { ios::sync_with_stdio(0); cin.tie(0), cout.tie(0); int _ = 1; while(_--) { solve(); } return 0; }

3. 核心考点与注意事项

  • 贡献法 (Contribution Technique):不计算每对组合的结果,而是统计每个元素在最终算式中出现了多少次。
  • 异或的归零性:异或运算最核心的性质是x ⊕ x = 0 x \oplus x = 0xx=0。只要某个数出现了偶数次,它在异或链中就会彻底消失。
  • 组合数学计数
    • 元素a k a_kak会和它前面的k − 1 k-1k1个数配对,也会和它后面的n − k n-knk个数配对。
    • 总次数= ( k − 1 ) + ( n − k ) = n − 1 = (k-1) + (n-k) = n-1=(k1)+(nk)=n1次。
    • 这是一个常数,意味着所有数字出现的次数是一样多的。

🛠️ 位运算基础备忘录

符号操作关键特性
^异或相同为 0,不同为 1;自反性a ⊕ b ⊕ b = a a \oplus b \oplus b = aabb=a
&按位与全 1 为 1;常用于取位或判断奇偶x & 1
``按位或
<<左移x ≪ n x \ll nxn相当于x ⋅ 2 n x \cdot 2^nx2n
http://www.cnnetsun.cn/news/1751470.html

相关文章:

  • Ostrakon-VL-8B商业应用:赋能区域督导远程巡店,替代80%人工拍照核查
  • 2026届毕业生推荐的五大降重复率工具推荐榜单
  • 动态数组(类似vector)的简易实现
  • OpenClaw钉钉接入教程:Phi-3-mini-128k-instruct打造团队问答机器人
  • 嵌入式轻量级调试追踪组件dbg-trace设计与应用
  • 【愚公系列】《剪映+DeepSeek+即梦:短视频制作》053-用即梦生成创意图片(文生图案例)
  • 010、知识蒸馏在YOLO26中的实践:从模型臃肿到轻量部署的实战笔记
  • 基于MATLAB的三相异步电机矢量控制变频调速系统设计仿真
  • WinForms开发小技巧:用PropertyGrid实现类似Visual Studio的属性面板效果
  • 智能体“记忆力”评估基准:如何量化记忆的准确性、相关性与时效性?
  • 什么是北京 SEO 排名优化
  • QClaw 接入全网资源搜索助手Skill与使用教程(Agent技能自动搜索软件/游戏资源)
  • 实战指南:利用Kali Linux与RT3070L网卡破解WPA/WPA2无线网络
  • OpenHarmony相机驱动开发实战:从HDF注册到图像捕获全流程解析
  • OpenClaw轻量部署:Qwen3-4B在树莓派上的优化运行
  • TonPE 6.0.0.0.exe
  • 基于Transformer-BiGRU、Transformer、CNN-BiGRU、BiGRU、CNN五模型单变量时序预测一键对比Matlab代码
  • 丹青识画部署教程:私有化部署中SSL证书与水墨UI HTTPS适配
  • OpenClaw浏览器自动化:百川2-13B量化模型智能填表实战
  • OpenClaw安全防护指南:千问3.5-9B本地化执行权限管理
  • OpenClaw二手数据清洗:Qwen3-14B自动修复爬虫残缺数据
  • 利用快马平台与Ollama快速构建本地AI对话原型
  • 智慧化电力设备巡检-基于YOLOv8深度学习的无人机输电线路异物检测系统 YOLO模型如何训练无人机输电线异物检测数据集 识别鸟巢风筝及气球的检测
  • 开源ST-LINK V2硬件设计与调试器制作指南
  • 别再被P2P卡顿困扰了!聊聊FullCone NAT这个‘直连神器’(附NAT类型检测方法)
  • 别再死记硬背背包问题公式了!用‘小偷逛博物馆’的故事带你手写递归C++代码
  • Simulink IEEE 10机39节点系统模型:用于电力系统小干扰稳定性分析及功角稳定性研究验证
  • vLLM在线推理实战:从服务启动到高并发调优全解析
  • 小红书、京东、蚂蚁、平安等 7 位专家复盘 AI 落地实战,2026 奇点智能技术大会「AI+行业落地实践」专题揭晓
  • Go语言怎么用依赖注入_Go语言依赖注入DI教程【简明】