BZOJ3781:小B的询问(莫队)
2024-09-04 12:41:45
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
1 3 2 1 1 3
1 4
2 6
3 5
5 6
Sample Output
6
9
5
2
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);
}
最新文章
- Ubuntu 16.10 在 VMware 上无法安装的解决办法
- Python数据结构与算法--面向对象
- ubuntu15.10升级时校验和不符的解决方法
- cf B. Little Dima and Equation
- VS上的WebService入门贴
- Nlpir Parser灵玖文本语义挖掘系统数据采集
- 《深入浅出WPF》笔记——绘画与动画
- HTML+DIV+CSS+JSweb前端基础
- bzoj 2435: [Noi2011]道路修建
- rbac数据库设计
- LCA最近公共祖先(倍增版)
- Mesos源码分析(8): Mesos-Slave的初始化
- API接口开发(持续更新)
- Chrome 浏览器数据无法同步,google账号登录失败,提示 Request canceled
- usermod - linux修改用户帐户信息
- POJ 1655 - Balancing Act - [DFS][树的重心]
- Brute Force Sorting(HDU6215)
- 20个代码生成框架 (.NET JAVA)
- 常见web安全攻防总结
- 使用ffmpeg步骤(转)
热门文章
- jQuery 关于IE9上传文件无法进入后台问题的原因及解决办法(ajaxfileupload.js第四弹)
- Cheatsheet: 2018 03.01 ~ 2018 03.31
- 167 -两个Sum II - 输入数组已排序
- 对JDK、JRE和JVM的一些浅薄理解
- Lucene原理之概念
- python_Django 实现登入功能form表单的参数接收处理
- Freebsd10.3 Nginx多版本PHP
- COGS2217 papertask
- BZOJ3529: [Sdoi2014]数表(莫比乌斯反演 树状数组)
- 理解webpack4.splitChunks之maxAsyncRequests