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

蓝桥杯备赛:Day3-P1102 A-B 数对

📚 算法笔记:P1102 A-B 数对 (枚举与哈希查找)

1. 题目简述

P1102 A-B 数对 - 洛谷

给出一个长度为N NN的正整数数列和一个整数C CC,求有多少个不同的数对( A , B ) (A, B)(A,B)满足A − B = C A - B = CAB=C

  • 数据范围N ≤ 2 × 10 5 N \le 2 \times 10^5N2×105,答案可能超过int范围。

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

#include <bits/stdc++.h> using namespace std; typedef long long ll; int N; ll c; ll arr[200005]; // 存储原始数列 map<ll, ll> cnt; // 存储每个数字出现的次数 (Key:数字, Value:次数) ll ans = 0; // 最终对数,必须用 long long void solve() { // 1. 读入数据并进行安全检查 if(!(cin >> N >> c)) return; // 2. 第一次遍历:读入数组并统计每个数字出现的频率 for (int i = 1; i <= N; i++) { cin >> arr[i]; cnt[arr[i]]++; // map 自动处理:若不存在则初始化为0再++ } // 3. 第二次遍历:将每个数看作 B,寻找符合条件的 A for (int i = 1; i <= N; i++) { // 变形公式:A - B = C => A = B + C // 我们当前枚举的是 B (即 arr[i]),我们要找 A (即 arr[i] + c) // 直接从 map 中获取 A 出现的次数并累加到答案中 ans += cnt[arr[i] + c]; } // 4. 输出最终结果(注意不要写在循环内部) cout << ans << endl; } int main() { // 竞赛必备优化 ios::sync_with_stdio(0); cin.tie(0), cout.tie(0); solve(); return 0; }

3. 核心考点与注意事项

🔍 核心考点
  1. 公式变形:将A − B = C A - B = CAB=C转化为A = B + C A = B + CA=B+C。这是算法优化的前提,将“寻找两个变量”转化为“固定一个变量,查找另一个变量”。
  2. 哈希表计数:利用std::map实现O ( log ⁡ N ) O(\log N)O(logN)的查找效率。如果使用双重for循环(O ( N 2 ) O(N^2)O(N2)),面对2 × 10 5 2 \times 10^52×105的数据量会彻底超时。
  3. 数据类型意识
    • 计数结果N NN个数如果全部相同且C = 0 C=0C=0,答案是N 2 N^2N2,会爆int
    • Key 值:输入的数字可能很大,map的键必须用long long
⚠️ 注意事项
  • Map 的副作用:访问cnt[x]时,如果x不存在,map会自动插入一个0。在本题中由于我们只是累加次数,不影响结果,但在某些统计总数的场景下需谨慎。
  • 重复数字处理:题目求的是“数对”数量,因此必须统计频率。例如1 1 2 2C = 1 C=1C=1的对数,答案应为 4(每个 1 都能匹配两个 2)。

4. 易错点回顾 (My Mistakes)

  1. 输出位置错误:误将cout放在了遍历B BBfor循环内部,导致输出了每一阶段的中间累加值,而非最终结果。
  2. 代码逻辑顺序:最初尝试在读入的同时进行匹配。纠正:这种题目最稳妥的做法是“先全部读入并统计完毕”,再进行二次遍历匹配,防止逻辑遗漏。
http://www.jsqmd.com/news/588647/

相关文章:

  • 2026最权威的五大降AI率网站推荐
  • 如何判断自己的网站是否需要 SEO 优化服务_关键词优化是 SEO 优化服务的核心吗
  • 7张图看懂Claude Code:从架构图解到工程实现
  • Meta-Harness实战入门基础教程(非常详细),彻底搞懂整套Harness自动进化,收藏这篇就够了!
  • ip新域名对SEO有什么影响
  • 【Ease UI】2026-04-03组件更新:新增组件xly-china-map中国地图组件
  • 示波器眼图分析实战:如何从颜色分布一眼看穿信号质量(附实测案例)
  • AI Agent架构入门到精通:LangChain重磅DeepAgents深度拆解,看这一篇就够了!
  • AO3镜像站终极访问指南:3步解决同人作品访问难题
  • 终极指南:3个简单步骤让旧款Mac安装最新macOS系统
  • Phi-4-mini-reasoning参数详解:presence_penalty对重复结论的抑制效果
  • Obsidian的插件Claudian报错
  • LLM智能体入门到精通:一文看透“共同进化”Complementary RL,看这篇就够了!
  • LLM个人知识库入门基础教程(非常详细),跟着Karpathy学AI正确打开方式,收藏这一篇就够了!
  • RAG 知识库检索参数怎么调?一篇讲清 top_k、BM25、Rerank、各种阈值的区别
  • 计算机毕业设计:Python新能源汽车数据分析与个性化推荐系统 Django框架 snowNLP 协同过滤推荐算法 requests爬虫 可视化(建议收藏)✅
  • seo 推广公司一般多久能见效果_seo 推广公司是否值得信赖
  • SCANET2~5 能力差异速查:上位机路数、隔离、扩展口怎么理解
  • IDEA鲜亮配色方案实战:Java/Mapper.xml/yml文件高亮配置指南(附下载)
  • 2026届毕业生推荐的六大降重复率神器推荐
  • YOLO X Layout部署案例:中小企业PDF文档智能解析落地实践
  • 网站SEO与用户体验的关系是什么_高质量内容创作的技巧是什么
  • WebGoat靶场通关避坑指南:从Docker部署到JWT令牌伪造的实战踩坑记录
  • MATLAB FFT 入门到实战:信号分析与频率分解的完整指南
  • 如何高效使用Sketch设计稿转HTML工具:5步实现设计到代码的智能转换
  • Python+AI:自动分析财报数据的5个实战技巧
  • 低成本搭建方案:树莓派运行OpenClaw连接千问3.5-9B云接口
  • GitHub中文界面终极指南:5分钟免费解锁中文GitHub
  • 【顶刊复现】跟网型逆变器小干扰稳定性分析与控制策略优化Matlab代码
  • 过期域名抢注对SEO优化有什么影响