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

第八届广西大学生程序设计大赛暨2025邀请赛 G题思路分享(trie树)

https://ac.nowcoder.com/acm/contest/110811/G

题意概述

给定两个长度为 \(n\) 的数组 \(a,b\) 和两个参数 \(k_1,k_2\),求满足:

  • \(i \lt j\)

  • \(k_1 \oplus a_i \oplus a_j \lt k_2 \oplus b_i \oplus b_j\)

的点对数量。

思路

\(k_1 \oplus a_i \oplus a_j = X\)\(k_2 \oplus b_i \oplus b_j = Y\)。原不等式相当于在 \(X \oplus Y\) 的最高有效位 \(d\) 上,\(X\) 在该位上为 \(0\)\(Y\) 在该位上为 \(1\)

\(X \oplus Y\)\(d\) 之前的位上为 \(0\)\(X\) 的第 \(d\) 位为 \(0\),即 \(k_1 \oplus a_i \oplus a_j\)\(d\) 位为 \(0\)

\(X \oplus Y\) 的表达中可以将 \(i,j\) 分离,考虑 \(trie\) 树,插入 \(a_i \oplus b_i\)。需要知道 \(X\) 是否为 \(0\),统计 \(a_i\) 在该位为 \(0\) 和为 \(1\) 的数量。

\(trie\) 树上累加贡献即可,跳转时走让 \(X \oplus Y\) 在该位为 \(0\) 的边,如果存在让 \(X \oplus Y\) 在该位为 \(1\) 的边,就以该位为最高位计算一次贡献。

时间复杂度 \(\mathcal{O}(32n)\)

代码

//author:kzssCCC#include <bits/stdc++.h>
using namespace std;
using ll = long long;void solve(){int n,k1,k2;cin >> n >> k1 >> k2;vector<int> a(n+1);for (int i=1;i<=n;i++){cin >> a[i];}	vector<int> b(n+1);for (int i=1;i<=n;i++){cin >> b[i];}vector<array<int,2>> next{{-1,-1}};vector<array<int,2>> cnt{{0,0}};ll res = 0;for (int i=1;i<=n;i++){{int u = 0;for (int j=31;j>=0;j--){if (next[u][((a[i]^b[i]^k1^k2)>>j&1)^1]!=-1){res += cnt[next[u][((a[i]^b[i]^k1^k2)>>j&1)^1]][(a[i]^k1)>>j&1];}if (next[u][(a[i]^b[i]^k1^k2)>>j&1]!=-1){u = next[u][(a[i]^b[i]^k1^k2)>>j&1];}else break;}}{int u = 0;for (int j=31;j>=0;j--){int cj = (a[i]^b[i])>>j&1;if (next[u][cj]==-1){next.push_back({-1,-1});next[u][cj] = next.size()-1;cnt.push_back({0,0});}cnt[next[u][cj]][a[i]>>j&1]++;u = next[u][cj];}}}cout << res << '\n';
}int main(){ios::sync_with_stdio(false);cin.tie(0);int t = 1;// cin >> t;while (t--) solve();return 0;
}
http://www.jsqmd.com/news/903519/

相关文章:

  • 【紧急更新】Veo 2.3.1补丁强制要求:所有生产环境必须在72小时内完成预览缓冲区隔离配置,否则触发自动降级
  • Dism++:Windows系统优化终极指南与16种语言支持
  • 自条件化与非自回归吸引子:提升端到端说话人日志模型性能
  • 猫抓Cat-Catch:3分钟掌握浏览器媒体资源捕获神器
  • 专业级浏览器资源嗅探实战:从基础配置到高级应用全解析
  • dundeegdu:Go 语言实现的磁盘使用分析工具
  • VideoCrafter2完整教程:从零开始掌握AI视频生成技术
  • 2026年5月卖金必看:余生黄金回收领衔银川六大门店排行,免费上门不扣重 - 润富黄金珠宝行
  • 扬州邗江区黄金回收2026年5月实操指南:正规透明变现,上门服务覆盖全域 - 润富黄金珠宝行
  • 2026年汕头婚纱照/婚纱摄影机构推荐|TOP5品牌排名测评指南! - 江湖评测
  • LLM Agent 记忆进化论:一场从“存“到“悟“的技术变革
  • Windows资源管理器APK/IPA文件图标混乱?ApkShellext2实现跨平台应用包完美显示
  • 【Veo 2 API接入实战指南】:20年AI工程师权威解析5大避坑红线与3小时极速联调法
  • 利用Taotoken CLI工具快速为安卓开发机配置全局模型调用环境
  • 别再只改后缀了!从dcrCms漏洞看文件上传的Content-Type绕过实战与防御
  • Arduino红外传感器音乐触发装置:从原理到实践的创客入门项目
  • 美通卡回收怎么选渠道?靠谱平台详细分享 - 购物卡回收找京尔回收
  • Python之function-debugger包语法、参数和实际应用案例
  • 2026广州代理记账哪家靠谱?业内资深顾问专访|5家正规财税机构真实测评 - 资讯速览
  • Kali 2020.3 高DPI屏幕字体太小?试试这个一键切换工具和手动调优全攻略
  • 别再到处找教程了!用Python给AutoCAD写脚本,从VBA迁移到pywin32的保姆级避坑指南
  • 美少女万华镜1-4下载2026最新
  • 5分钟快速上手:VSCode中高效背单词的终极解决方案
  • DeepSeek批处理QPS卡在850上不去?:独家披露TensorRT-LLM插件兼容性矩阵+3种量化感知重排序技术(含NVidia认证调优日志)
  • 告别虚拟机!Windows 10本地高效搭建QGC开发环境(VS2022+QT5.15.2实战)
  • 暗黑破坏神3终极自动化助手:D3keyHelper完全指南与实战技巧
  • 2026年5月太原黄金回收哪家靠谱?跑遍六大区实测排行,这家只收1元差价真香! - 润富黄金珠宝行
  • 为什么AI智能体会改变组织结构?
  • 通用小说下载神器 sonovel
  • D2RML终极指南:告别繁琐登录,实现暗黑2重制版多开自由