题目描述

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

输入输出格式

输入格式:

第一行,三个整数N、M、K。

第二行,N个整数,表示小B的序列。

接下来的M行,每行两个整数L、R。

输出格式:

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

输入输出样例

输入样例#1: 复制

6 4 3
1 3 2 1 1 3
1 4
2 6
3 5
5 6
输出样例#1: 复制

6
9
5
2

说明

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

题解;

k^2和(k+1)^2的关系。

#include <bits/stdc++.h>
using namespace std;
const int MAXN=50010;
int a[MAXN],num[MAXN],s,ans=0,anss[MAXN];
struct node{
int l,r;
int id;
}x[MAXN];
bool cmp1(node k,node z)
{
if(k.l/s==z.l/s) //此处时分块的地方,将在同一块的放在一起。
{
return k.r<z.r;
}
return k.l<z.l;
}
void add(int i)
{
int k=num[a[i]]++;//(k+1)^2-k^2=2*k+1;从k->k+1加上2*k+1;
ans+=k*2+1;
}
void del(int i)
{
int k=--num[a[i]];//此处便是减去前一个的2*k+1;
ans=ans-2*k-1;
}
int main()
{
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
for (int i = 1; i <=n ; ++i) {
scanf("%d",&a[i]);
}
s=(int)sqrt(n);
for (int i = 1; i <=m ; ++i) {
scanf("%d%d",&x[i].l,&x[i].r);
x[i].id=i;
}
sort(x+1,x+1+m,cmp1);
int l=1,r=0;
ans=0;
for (int i = 1; i <=m ; ++i) {
while (r<x[i].r) add(++r); //r本身已经加过了,要从下一点开始。
while (r>x[i].r) del(r--);//减这个操作要把自己本身也给减掉。
while (l>x[i].l) add(--l);
while (l<x[i].l) del(l++);
anss[x[i].id]=ans;
}
for (int i = 1; i <=m ; ++i) {
printf("%d\n",anss[i]);
}
return 0;
}

  

最新文章

  1. win10与ubuntu下演示运行.net core rc2 1.0.0.3002702程序
  2. 解决Idea创建maven-archetype-webapp项目无java目录的问题
  3. 关于SpeedButton中使用下划线快捷键不响应的问题
  4. 对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB)
  5. 【android学习2】:Eclipse中HttpServlet类找不到
  6. python写入中文到文件乱码的问题
  7. 为了让vi命令也可以使用vim的配置,需要修改 vi /etc/bashrc 增加一行 alias vi=&#39;vim&#39;此时,经过上面配置已经可以显示语法高亮了
  8. (转)JavaWeb学习总结(十三)——使用Session防止表单重复提交
  9. XML读写
  10. cf472A Design Tutorial: Learn from Math
  11. BackGroundWorker使用总结
  12. AI 人工智能 探索 (八)
  13. phpcms基础
  14. mysql5.6创建新用户并给授权指定的数据库权限
  15. 如何在Win7安装U盘中加入USB3.0驱动的支持
  16. JS 两个对象数组合并并去重
  17. Bigger-Mai 养成计划,前端基础学习之HTML
  18. SpringMVC简单项目配置
  19. vue computed的执行问题
  20. flask 定义数据库关系(多对多)

热门文章

  1. DIV三列同行
  2. 如何使用Nunit进行测试
  3. C#对bat脚本文件的操作示例
  4. LDAP 在ubuntu14.04下的安装配置install and configure
  5. 吴超hadoop7天视频教程全集
  6. vue-表单绑定
  7. HTML?这些还不懂咋办?
  8. AJAX(四):XHR2支持的方法
  9. Qlikview 数据加载方法罗列
  10. void和void*指针的一些理解