当前位置: 首页 > 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.rkmt.cn/news/1530751.html

相关文章:

  • MPC866外部总线接口:突发传输、总线仲裁与内存保留机制详解
  • 2026年商标购买平台排名+选购指南:从合规备案到流程过户,哪个最靠谱? - 信息热点
  • 敏感肌、学生党舒缓面膜怎么选?2026年修护面膜选购指南:温和维稳 晒后泛红全适配 - 17329971652
  • 口碑爆棚!长沙这些全屋定制风格,究竟藏着怎样的魅力? - 资讯速览
  • 哈尔滨各区名表回收测评,道里道外哪家出价更高 - 奢侈品回收测评
  • 抖音批量下载工具终极指南:从单视频到主页全量快速下载
  • 苹果降价终极低价确认官宣!6月16日晚8点苹果全机型全系大降价!iPhone17跳水至4000+,国补+618优惠券,买手机时机不要错过 - 资讯报道
  • FanControl终极指南:如何让Windows电脑风扇告别噪音困扰?
  • 7步掌握:HoRNDIS在macOS上实现Android USB网络共享的专业指南
  • 嵌入式USB主机开发实战:从API原理到飞思卡尔USBHOST应用详解
  • 2026拉萨装修公司排名前十 靠谱家装怎么选 - 资讯速览
  • 京东抢购助手终极指南:5分钟配置,自动化秒杀成功率提升300%
  • 苏州万企易做AI GEO效果好吗 - 信息热点
  • 如何用68万+手写样本攻克传统中文AI识别难题?一份开源工具完全指南
  • Ai Vibecoding(Claude Code的使用)
  • 2026年汉堡加盟赛道深度解析:美州纯手工牛肉汉堡,差异化赛道下的务实创业选择 - 17322238651
  • 2026年石家庄美发化妆培训,如何根据需求筛选学习方向? - 国麟测评
  • 环境搭建教程
  • 沈阳宇华飞阳 东北一站式商用视听显示设备供应基地 - 资讯报道
  • 暗黑破坏神2存档编辑器:3步轻松修改D2/D2R角色装备与属性
  • 用 ChatGPT Image 2.0 辅助前端页面还原:从截图分析到 CSS 实现的实践流程
  • Sklearn版本升级后,手写数字数据集Mnist导入报错?试试这个本地加载的万能解法
  • C语言数值计算进阶:掌握fenv.h与inttypes.h构建健壮代码
  • 2026年特斯拉Model 3隐形车衣品牌推荐榜:TPU材质、防刮蹭、增亮持久与全车贴合工艺深度解析 - 品牌发掘
  • 阿里JDK源码核心剖析:程序员进阶必备!
  • 中国即时通讯软件前十强推荐:2026年企业即时通讯选型指南 - 小天互连即时通讯
  • 发货去香港运费多少?时效是几天? - 资讯报道
  • 沈阳上门收钻石靠谱吗?2026六家连锁门店实测对比 - 禹竞
  • 程序员生存指南07-薪资溢价40%-50%!AI工程化人才为什么如此稀缺?AI工程化工程师的核心竞争力解析
  • 2026 鄞州除醛深度测评:5 大甄选准则 + 多品牌横评,本地靠谱机构推荐 - 泓动