Description

小B有一个序列,包含N个1~K之间的整数。他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重复次数。小B请你帮助他回答询问。

Input

第一行,三个整数N、M、K。
第二行,N个整数,表示小B的序列。
接下来的M行,每行两个整数L、R。

Output

M行,每行一个整数,其中第i行的整数表示第i个询问的答案。
 

Sample Input

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

Sample Output

6
9
5
2

HINT

对于全部的数据,1<=N、M、K<=50000

Solution

莫队水题

Code

 #include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define N (50000+100)
using namespace std;
struct node
{
int l,r,id,ans,ord;
}Ask[N];
int a[N],n,m,k,cnt[N],Sigma,l=,r=;
bool cmp1 (node a,node b){return a.id==b.id?a.r<b.r:a.id<b.id;}
bool cmp2 (node a,node b){return a.ord<b.ord;} void Ins(int x)
{
Sigma-=cnt[x]*cnt[x];
cnt[x]++;
Sigma+=cnt[x]*cnt[x];
}
void Del(int x)
{
Sigma-=cnt[x]*cnt[x];
cnt[x]--;
Sigma+=cnt[x]*cnt[x];
}
void MoQueue(int x)
{
int L=Ask[x].l,R=Ask[x].r;
while (l<L) Del(a[l++]);
while (l>L) Ins(a[--l]);
while (r<R) Ins(a[++r]);
while (r>R) Del(a[r--]);
Ask[x].ans=Sigma;
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
int len=pow(n,2.0/3.0);
for (int i=;i<=n;++i)
scanf("%d",&a[i]);
for (int i=;i<=m;++i)
{
scanf("%d%d",&Ask[i].l,&Ask[i].r);
Ask[i].id=Ask[i].l/len;
Ask[i].ord=i;
}
sort(Ask+,Ask+m+,cmp1);
for (int i=;i<=m;++i)
MoQueue(i);
sort(Ask+,Ask+m+,cmp2);
for (int i=;i<=m;++i)
printf("%d\n",Ask[i].ans);
}

最新文章

  1. Ubuntu 16.10 在 VMware 上无法安装的解决办法
  2. Python数据结构与算法--面向对象
  3. ubuntu15.10升级时校验和不符的解决方法
  4. cf B. Little Dima and Equation
  5. VS上的WebService入门贴
  6. Nlpir Parser灵玖文本语义挖掘系统数据采集
  7. 《深入浅出WPF》笔记——绘画与动画
  8. HTML+DIV+CSS+JSweb前端基础
  9. bzoj 2435: [Noi2011]道路修建
  10. rbac数据库设计
  11. LCA最近公共祖先(倍增版)
  12. Mesos源码分析(8): Mesos-Slave的初始化
  13. API接口开发(持续更新)
  14. Chrome 浏览器数据无法同步,google账号登录失败,提示 Request canceled
  15. usermod - linux修改用户帐户信息
  16. POJ 1655 - Balancing Act - [DFS][树的重心]
  17. Brute Force Sorting(HDU6215)
  18. 20个代码生成框架 (.NET JAVA)
  19. 常见web安全攻防总结
  20. 使用ffmpeg步骤(转)

热门文章

  1. jQuery 关于IE9上传文件无法进入后台问题的原因及解决办法(ajaxfileupload.js第四弹)
  2. Cheatsheet: 2018 03.01 ~ 2018 03.31
  3. 167 -两个Sum II - 输入数组已排序
  4. 对JDK、JRE和JVM的一些浅薄理解
  5. Lucene原理之概念
  6. python_Django 实现登入功能form表单的参数接收处理
  7. Freebsd10.3 Nginx多版本PHP
  8. COGS2217 papertask
  9. BZOJ3529: [Sdoi2014]数表(莫比乌斯反演 树状数组)
  10. 理解webpack4.splitChunks之maxAsyncRequests