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

Junlier良心莫队

题目

luoguP2709 小B的询问

code

#include<bits/stdc++.h>
#define lst long long
#define ldb double
#define N 50050
using namespace std;
const int Inf=1e9;
int read()
{
int s=0,m=0;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')m=1;ch=getchar();}
while(ch>='0'&&ch<='9')s=(s<<3)+(s<<1)+(ch^48),ch=getchar();
return m?-s:s;
} int n,m,K,unit;lst Ans;
int v[N],bl[N];lst sum[N];
struct QUES{int le,ri,id;lst ans;}ljl[N];
bool cmp_ut(QUES &a,QUES &b){return bl[a.le]==bl[b.le]?a.ri<b.ri:a.le<b.le;}
bool cmp_id(QUES &a,QUES &b){return a.id<b.id;}
void Update(int now,int add)
{
Ans-=sum[v[now]]*sum[v[now]];
sum[v[now]]+=add;
Ans+=sum[v[now]]*sum[v[now]];return;
} int main()
{
n=read(),m=read(),K=read();unit=sqrt(n);
for(int i=1;i<=n;++i)
v[i]=read(),bl[i]=i/unit+1;
for(int i=1;i<=m;++i)
ljl[i]=(QUES){read(),read(),i};
sort(ljl+1,ljl+m+1,cmp_ut); int ll=1,rr=0;
for(int i=1;i<=m;++i)
{
while(ll<ljl[i].le)Update(ll,-1) ,ll++;
while(ll>ljl[i].le)Update(ll-1,1),ll--;
while(rr<ljl[i].ri)Update(rr+1,1),rr++;
while(rr>ljl[i].ri)Update(rr,-1) ,rr--;
ljl[i].ans=Ans;
} sort(ljl+1,ljl+m+1,cmp_id);
for(int i=1;i<=m;++i)
printf("%lld\n",ljl[i].ans);
return 0;
}

小B的询问(题解)(莫队)的更多相关文章

  1. BZOJ_3781_小B的询问_莫队

    BZOJ_3781_小B的询问_莫队 Description 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值 ...

  2. 小Z的袜子(题解)(莫队)

    小Z的袜子(题解)(莫队) Junlier良心莫队 题目 luoguP1494 [国家集训队]小Z的袜子 code #include<bits/stdc++.h> #define lst ...

  3. 洛谷2709 小B的询问(莫队)

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

  4. 【Luogu P2709 小B的询问】莫队

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

  5. 洛谷P2709 BZOJ 3781 小B的询问 (莫队)

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

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

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

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

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

  8. 小B的询问(莫队)

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

  9. [bzoj3781]小B的询问_莫队

    小B的询问 bzoj-3781 题目大意:给定一个n个数的序列,m次询问.每次询问一段区间内数的种类的平方和. 注释:$1\le n\,m\le 5\cdot 10^4$. 想法:莫队练习题. 我们考 ...

随机推荐

  1. Jupyter配置工作路径

    在修改之前,C:\Users\Administrator\ .jupyter 目录下面只有一个“migrated”文件. 打开命令窗口(运行->cmd),进入python的Script目录下输入 ...

  2. Linux系统Docker启动问题Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service"

    在Liunx中使用Docker, 注: Liunx使用的是在虚拟机下的centOS7版本在刚开始安装Docker时没有任何错误, 但是在后续的docker启动过程中, 出现以下问题: [root@zk ...

  3. EwoMail 邮件服务器安装

    ewomail 安装及使用 主页:http://www.ewomail.com/ 开源版主页:http://www.ewomail.com/list-9.html 开源版文档:http://doc.e ...

  4. linux--基础知识5

    #文件合并与文件归档 #cat /etc/passwd > new_pass.txt (创建一个新的文档并将cat/etc/passwd的内容合并进来) #echo "xxxx&quo ...

  5. 包装CGFloat和用NSNumber初始化的区别?

    @(CGFloat)和[NSNumber numberWith:CGFloat]的区别?

  6. R语言预测实战(第一章)

    本例使用forecast包中自带的数据集wineind,它表示从1980年1月到1994年8月, 由葡萄酒生产商销售的容量不到1升的澳大利亚酒的总量.数据示意如下: #观察曲线簇 len=1993-1 ...

  7. Elven Postman

    Elven Postman Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  8. BUUCTF | [RoarCTF 2019]Easy Calc

    看一下页面源码,发现了提示: calc.php?num=encodeURIComponent($("#content").val()) $("#content" ...

  9. vue鼠标修饰符

    鼠标左键事件 <div @click.left="mouseClick" style="border: solid 1px red; width:500px; he ...

  10. install mysql firewall