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

莫队 n的序列,多次查询一段区间内的数字的个数

莫队 n的序列,多次查询一段区间内的数字的个数

'''
// 普通莫队 O(n*sqrt(n))

include

include

include

include

using namespace std;

const int N=50005;
int n,m,k,B,a[N];
int sum,c[N],ans[N];
struct Q{
int l,r,id;
//按l所在块的编号l/B和r排序
bool operator<(Q &b){
if(l/B!=b.l/B) return l<b.l;
if((l/B)&1) return r<b.r;
return r>b.r;
}
}q[N];

void add(int x){ //扩展一个数
sum-=c[x]c[x];
c[x]++;
sum+=c[x]
c[x];
}
void del(int x){ //删除一个数
sum-=c[x]c[x];
c[x]--;
sum+=c[x]
c[x];
}
int main(){
scanf("%d%d%d",&n,&m,&k);
B=sqrt(n); //块的大小
for(int i=1;i<=n;++i)scanf("%d",&a[i]);
for(int i=1;i<=m;++i)
scanf("%d%d",&q[i].l,&q[i].r),q[i].id=i;
sort(q+1,q+1+m); //按l/B和r排序
for(int i=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(int i=1;i<=m;++i)printf("%d\n",ans[i]);
}
'''

http://www.zskr.cn/news/9836.html

相关文章:

  • 2- 不知道自己现在做的对不对,有没有浪费掉自己的才华 也许自己是一个天才马术 但是没有资源只能 这样
  • k8s系列--容器生命周期
  • 学生管理系统案例初步分析报告
  • 9月22号
  • 题解:AT_agc052_c [AGC052C] Nondivisible Prefix Sums
  • 2025年9月22日 - 20243867孙堃2405
  • 二进制 - 20243867孙堃2405
  • 如何让AI生成多页面APP原型图?AI原型设计实用指南
  • 代码随想录算法训练营第五天 | leetcode 242 349 202 1
  • 原码补码反码与位操作
  • 特殊句式
  • RAG系统嵌入模型怎么选?选型策略和踩坑指南
  • (应该写的比较清晰)D2. Max Sum OR (Hard Version)
  • Linux运维
  • day001
  • # Xilnx FPGA 资源结构
  • 借助S参数测量评估电容器阻抗第 2 部分
  • 实战:Android 自定义菊花加载框(带超时自动消失) - 教程
  • 超级恶心的题面 [USACO21OPEN] Portals G
  • 昆仑通态触摸屏保存参数到内部存储器并读取的方法成都控制器开发提供
  • 使用reCAPTCHA提升WordPress网站安全性 - 指南
  • LaTeX入门:10分钟掌握核心用法 - 详解
  • Codeforces 2127 D(图论,组合数学,DFS,分类讨论)
  • 每日报告-关于本学期的计划
  • 若依前后端分离版本二次开发(一 搭建开发环境,新建模块)
  • 每日博客
  • STM32HAL 飞快入门(十九):UART 编程(二)—— 中断方式实现收发及局限分析
  • 详细介绍:uniapp | u-waterfall实现瀑布流商品列表(支持筛选查询)
  • 负载分析和排查六
  • 6月6日证书 - 工信部人才交流中心PostgreSQL中级PGCP高级PGCM认证