题面

解析

这就是道莫队模板啊啊!!

因此,似乎并没有什么好讲的。

莫队算法传送门

我们只需要将询问存下来,

离线处理就行了。

还是上代码吧:

#include<bits/stdc++.h>
using namespace std; inline int read(){
int sum=,f=;char ch=getchar();
while(ch>'' || ch<''){if(ch=='-')f=-;ch=getchar();}
while(ch>='' && ch<=''){sum=sum*+ch-'';ch=getchar();}
return f*sum;
} struct node{
int l,r,ans,id;
}q[];
int n,m,k,l,r,gap,ans=;
int a[]/*颜色*/,c[]/*颜色的重复次数*/; bool cmp1(node a,node b){
return (a.r/gap==b.r/gap)? a.l<b.l : a.r<b.r;
} bool cmp2(node a,node b){
return a.id<b.id;
} inline void add(int x){
c[a[x]]++;
ans+=*c[a[x]]-;
} inline void del(int x){
c[a[x]]--;
ans-=*c[a[x]]+;
} int main(){
n=read();m=read();k=read();
gap=n/sqrt(m*2.0/);
for(int i=;i<=n;i++){
a[i]=read();
}
for(int i=;i<=m;i++) q[i].l=read(),q[i].r=read();
for(int i=;i<=m;i++) q[i].id=i;
sort(q+,q+m+,cmp1);
l=;r=;
for(int i=;i<=m;i++){
int ql=q[i].l,qr=q[i].r;
while(l<ql) del(l),l++;
while(l>ql) l--,add(l);
while(r>qr) del(r),r--;
while(r<qr) r++,add(r);
q[i].ans=ans;
}
sort(q+,q+m+,cmp2);
for(int i=;i<=m;i++) printf("%d\n",q[i].ans);
return ;
}

题解 小B的询问的更多相关文章

  1. 小B的询问(题解)(莫队)

    小B的询问(题解)(莫队) Junlier良心莫队 题目 luoguP2709 小B的询问 code #include<bits/stdc++.h> #define lst long lo ...

  2. BZOJ3781: 小B的询问

    3781: 小B的询问 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 146  Solved: 98[Submit][Status] Descript ...

  3. bzoj 3781: 小B的询问 分块

    3781: 小B的询问 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 196  Solved: 135[Submit][Status] Descrip ...

  4. BZOJ 3781: 小B的询问

    3781: 小B的询问 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 643  Solved: 435[Submit][Status][Discuss ...

  5. Bzoj 3781: 小B的询问 莫队,分块,暴力

    3781: 小B的询问 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 426  Solved: 284[Submit][Status][Discuss ...

  6. P2709 小B的询问(莫队)

    P2709 小B的询问 莫队模板 资磁离线询问 维护两个跳来跳去的指针 先分块,蓝后询问按块排序. 蓝后每次指针左右横跳更新答案 #include<iostream> #include&l ...

  7. [洛谷 P2709] 小B的询问

    P2709 小B的询问 题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数 ...

  8. 2018.07.01 洛谷小B的询问(莫队)

    P2709 小B的询问 题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数 ...

  9. AC日记——小B的询问 洛谷 P2709

    小B的询问 思路: 水题: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 50005 #define ll ...

随机推荐

  1. centos git clone 报错 fatal: HTTP request failed 解决办法

    git clone报错提示 git clone https://github.com/xxxx.git Initialized empty Git repository in /root/xxxx/. ...

  2. 2019-07-30 C#基础知识学习

    继承和多态 接口与抽象类的区别:1.在接口中仅能定义成员,但是不能有具体的实现:抽象类除了抽象成员以外,其他成员有具体的实现.2.在接口中不能声明字段,并且不能声明任何私有成员,成员不能包含任何修饰符 ...

  3. Oracle同时插入多条数据

    INSERT ALL INTO 表名(NAME) VALUES ('tony') INTO 表名(NAME) VALUES ('tony2') INTO 表名(NAME) VALUES ('tony3 ...

  4. Netty怎么切换三种I/O模式和源码解释

    参考文献:极客时间傅健老师的<Netty源码剖析与实战>Talk is cheap.show me the code! 三种I/O模式 BIO:Block I/O,即同步并阻塞的IO:BI ...

  5. 给定进制下1-n每一位数的共享(Digit sum)The Preliminary Contest for ICPC Asia Shanghai 2019

    题意:https://nanti.jisuanke.com/t/41422 对每一位进行找循环节规律就行了. #define IOS ios_base::sync_with_stdio(0); cin ...

  6. 记录 OpenCV 错误

    最近在做一个"人脸识别"的项目,我想用OpenCV来分析图片中的人脸. 但是在测试的时候,程序报出“检测到0张脸” 可能的错误原因: 1.教程中OpenCV的版本问题,教程中用的版 ...

  7. 拜托,别再问我 QPS、TPS、PV、UV、GMV、IP、RPS 好吗?

    关于 QPS.TPS.PV.UV.GMV.IP.RPS 这些词语,看起来好像挺专业.但实际上,我认为是这是每个程序员必懂的知识点了,你可以搞不懂它们怎么计算的,但是你最少要知道它们分别代表什么意思吧? ...

  8. java中的接口和php的接口的区别

    php: 规范: 接口是一种特殊的抽象类,这种抽象类中只包含抽象方法和静态常量. 在接口中的抽象方法只能是public的,默认也是public权限. abstract和final修饰符也不能修饰接口中 ...

  9. 基于S7协议实现与西门子PLC通信

    西门子PLC是目前工控行业市场占有额比较大的一款PLC,而且随着上位机的越来越普及, 有很多人开始考虑自己开发上位机实现与西门子PLC的通信,遇到的第一个问题就是数据通信. 其实西门子PLC提供的接口 ...

  10. pyquery 库的使用

    from pyquery import PyQuery as pq # 文件勿命名为 pyquery.py,会发生冲突 # 字符串初始化 html = ''' <div id="pag ...