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

题解:洛谷 P2709 【模板】莫队 / 小 B 的询问

本文分享的必刷题目是从蓝桥云课洛谷AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。

欢迎大家订阅我的专栏:算法题解:C++与Python实现!

附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总


【题目来源】

洛谷:P2709 【模板】莫队 / 小 B 的询问 - 洛谷

【题目描述】

小 B 有一个长为n nn的整数序列a aa,值域为[ 1 , k ] [1,k][1,k]
他一共有m mm个询问,每个询问给定一个区间[ l , r ] [l,r][l,r],求:
∑ i = 1 k c i 2 \sum\limits_{i=1}^k c_i^2i=1kci2

其中c i c_ici表示数字i ii[ l , r ] [l,r][l,r]中的出现次数。

小 B 请你帮助他回答询问。

【输入】

第一行三个整数n , m , k n,m,kn,m,k

第二行n nn个整数,表示小 B 的序列。

接下来的m mm行,每行两个整数l , r l,rl,r

【输出】

输出m mm行,每行一个整数,对应一个询问的答案。

【输入样例】

6 4 3 1 3 2 1 1 3 1 4 2 6 3 5 5 6

【输出样例】

6 9 5 2

【算法标签】

#提高plus #莫队

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;// 定义长整型别名,便于处理大数据#defineintlonglong// 定义数组最大容量constintN=200005;// 全局变量声明intn,m,k,B;// n: 数组长度, m: 询问次数, k: 未使用参数, B: 分块大小inta[N];// 原始数组intcnt[N];// 计数器,记录每个数值出现的次数intans[N];// 存储每个询问的答案intsum;// 当前区间内所有数的出现次数的平方和// 询问结构体structQ{intl,r;// 区间左右端点intid;// 询问编号}q[N];// 莫队排序比较函数(奇偶性优化)boolcmp(Q a,Q b){if(a.l/B!=b.l/B)returna.l<b.l;// 不同块按左端点升序returna.r>b.r;// 同块按右端点降序(奇数块优化)}// 添加一个数到当前区间voidadd(intx){sum-=cnt[x]*cnt[x];// 减去旧贡献cnt[x]++;// 增加计数sum+=cnt[x]*cnt[x];// 加上新贡献}// 从当前区间删除一个数voiddel(intx){sum-=cnt[x]*cnt[x];// 减去旧贡献cnt[x]--;// 减少计数sum+=cnt[x]*cnt[x];// 加上新贡献}// 主函数入口signedmain(){// 读取数组长度、询问次数和未使用的参数kcin>>n>>m>>k;// 计算分块大小B=sqrt(n);// 读取原始数组for(inti=1;i<=n;i++)cin>>a[i];// 读取所有询问for(inti=1;i<=m;i++){cin>>q[i].l>>q[i].r;q[i].id=i;// 记录原始顺序}// 按照莫队顺序排序询问sort(q+1,q+m+1,cmp);// 初始化当前区间为空,l=1, r=0表示空区间for(inti=1,l=1,r=0;i<=m;i++){// 移动指针到目标区间while(l>q[i].l)// 左边界向左扩展add(a[--l]);while(r<q[i].r)// 右边界向右扩展add(a[++r]);while(l<q[i].l)// 左边界向右收缩del(a[l++]);while(r>q[i].r)// 右边界向左收缩del(a[r--]);// 存储当前区间的答案ans[q[i].id]=sum;}// 按原始顺序输出所有答案for(inti=1;i<=m;i++)cout<<ans[i]<<endl;return0;}

【运行结果】

6 4 3 1 3 2 1 1 3 1 4 2 6 3 5 5 6 6 9 5 2
http://www.jsqmd.com/news/1018915/

相关文章:

  • 2026精选:福州代理记账十大排行榜本土企业 ——高性价之选 - 资讯速览
  • MPC866外部总线接口:突发传输、总线仲裁与内存保留机制详解
  • 敏感肌、学生党舒缓面膜怎么选?2026年修护面膜选购指南:温和维稳 晒后泛红全适配 - 17329971652
  • 4步终极指南:使用OpenCore Legacy Patcher让老旧Mac焕发新生
  • 2026年商标购买平台排名+选购指南:从合规备案到流程过户,哪个最靠谱? - 信息热点
  • CRT-Royale-Reshade:在现代游戏中复活经典CRT显示器的视觉魔法
  • Mythos推理空间编织:下一代AI的动态知识建模与不确定性管理
  • 北海高口碑黄金铂金回收白银回收实体老店排行 5 家靠谱门店电话地址全收录
  • 口碑爆棚!长沙这些全屋定制风格,究竟藏着怎样的魅力? - 资讯速览
  • B站视频数据分析神器:Bilivideoinfo完整使用指南
  • MySQL面经整理
  • Windows 10也能运行Android应用:WSA移植版完全指南
  • EASY-HWID-SPOOFER:Windows硬件信息伪装工具全面指南
  • 浏览器端EPUB电子书制作工具:零安装的专业创作体验
  • 哈尔滨各区名表回收测评,道里道外哪家出价更高 - 奢侈品回收测评
  • 中国电子学会图形化2021.6月Scratch四级考级题
  • 专业滤袋服务商哪家强?7维度实测 - 资讯速览
  • 抖音批量下载工具终极指南:从单视频到主页全量快速下载
  • 长沙专业全屋定制公司,为你打造理想家居空间! - 资讯速览
  • VisualCppRedist AIO:Windows系统运行库一体化部署架构深度解析
  • Dell T440服务器硬盘灯狂闪黄灯?别慌,手把手教你排查RAID故障(附官方文档解读)
  • 苹果降价终极低价确认官宣!6月16日晚8点苹果全机型全系大降价!iPhone17跳水至4000+,国补+618优惠券,买手机时机不要错过 - 资讯报道
  • PXD10微控制器Flash模块低功耗模式与寄存器配置实战指南
  • 如何用浏览器快速制作专业电子书:EPubBuilder完整指南
  • 2026年别墅自建房商家推荐榜:正规品牌实力排名 - 资讯速览
  • 2026杭州添旺犬舍成犬行为矫正口碑排行榜:爆冲护食分离焦虑纠正.doc - 资讯报道
  • 台钓/海钓鱼竿怎么选?行情解析与优质厂家推荐 - 品牌推荐大师
  • STM32 I2C LCD 1602完整使用指南:从入门到实战应用
  • DQN 的两种扩展(DDQN,Dueling DQN)
  • 2026年6月口碑好的屋面虹吸排水供货厂家推荐,下沉式雨水斗/虹吸雨水/屋面虹吸排水,屋面虹吸排水生产厂家哪家靠谱 - 品牌推荐师