原题链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3781

小B的询问

Description

小B有一个序列,包含N个1~K之间的整数。他一共有M个询问,每个询问给定一个区间[L..R],求∑Ri=Lc(i)2∑i=LRc(i)2\sum_{i=L}^Rc(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

题解

赤裸♂的莫队算法

代码
#include<bits/stdc++.h>
#define A(v) cot[v]*cot[v]
using namespace std;
const int M=5e4+5;
struct sd{int le,ri,id;};
sd ask[M];
int n,m,k,cot[M],val[M],ans[M],SZ,res;
bool operator <(sd a,sd b){return a.le/SZ==b.le/SZ?a.ri/SZ<b.ri/SZ:a.le/SZ<b.le/SZ;}
void in(){scanf("%d%d%d",&n,&m,&k);SZ=sqrt(n);for(int i=1;i<=n;++i)scanf("%d",&val[i]);}
void add(int v){res-=A(v);cot[v]++;res+=A(v);}
void del(int v){res-=A(v);cot[v]--;res+=A(v);}
void ac()
{int a,b,L,R;for(int i=1;i<=m;++i){scanf("%d%d",&ask[i].le,&ask[i].ri);ask[i].id=i;}sort(ask+1,ask+1+m);L=R=ask[1].le,cot[val[ask[1].le]]=1,res=1;for(int i=1;i<=m;++i){while(L<ask[i].le)del(val[L++]);while(L>ask[i].le)add(val[--L]);while(R>ask[i].ri)del(val[R--]);while(R<ask[i].ri)add(val[++R]);ans[ask[i].id]=res;}for(int i=1;i<=m;++i)printf("%d\n",ans[i]);
}
int main()
{in();ac();return 0;
}

BZOJ3781 小B的询问相关推荐

  1. [BZOJ3781]小B的询问

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

  2. BZOJ3781小B的询问

    3781: 小B的询问 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 417 Solved: 278 Description 小B有一个序列,包含N个 ...

  3. [BZOJ3781]小B的询问(莫队)

    题目描述 传送门 题解 根n分块,离线询问,先按块的编号排序,块内按r排序,莫队暴力更新答案. 代码 #include<algorithm> #include<iostream> ...

  4. 【莫队算法】bzoj3781 小B的询问

    莫队经典. 开个数组维护a[i]出现的次数. 1 #include<cstdio> 2 #include<cmath> 3 #include<algorithm> ...

  5. P2709 小B的询问

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

  6. 【莫队/树上莫队/回滚莫队】原理详解及例题:小B的询问(普通莫队),Count on a tree II(树上莫队),kangaroos(回滚莫队)

    文章目录 问题引入 介绍莫队算法及其实现过程 时间复杂度 莫队算法适用范围 莫队奇偶优化 普通莫队:小B的询问 树上莫队:SP10707 COT2 - Count on a tree II 回滚莫队: ...

  7. bzoj 3781: 小B的询问(莫队)

    3781: 小B的询问 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1064  Solved: 713 [Submit][Status][Disc ...

  8. P2709 小B的询问 解题报告

    P2709 小B的询问 解题报告 题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L-R],求 ∑ c i 2 \sum c_i^2 ∑ci2​的值,其中i ...

  9. 【BZOJ3781】小B的询问 莫队

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

  10. 【洛谷 2709】小B的询问

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

最新文章

  1. Python设计模式-代理模式
  2. java字符串转换成日期型对象
  3. 跨年之际,中文版畅销书《TensorFlow深度学习实战大全》分享,直接送!
  4. linux内核链表以及list_entry--linux内核数据结构(一)
  5. 安装ESXi5.5遇到Relocating modules and starting up the kernel的处理
  6. 用存储过程还原数据库
  7. 【软考-软件设计师】计算机安全
  8. IDE使用经验——阿里代码规范 Eclipse格式化代码配置
  9. 大学哪些专业要学python_非计算机专业的大学生是否有必要学习Python编程
  10. idea怎么打包有依赖关系的项目_项目需求不明确,项目各模块逻辑关系不清晰,怎么排计划?...
  11. LeetCode MySQL 1212. 查询球队积分
  12. 查看list的形状_用Wordcloud生成指定形状的词云图
  13. Apache Flume 1.7深入浅出,快速入门
  14. Linux学习基础一 【安装 目录 系统命令 常用vim操作】
  15. 如何得到linux明文密码?
  16. css 图片剪切object-fit属性
  17. 基金使用计划 数学建模 matlab,基金使用计划模型
  18. 苹果IOS开发者账号总结
  19. 一位软件测试工程师的5年成长经历,这些职场黑话,你需要知道
  20. 姚前:美联储数字货币原型系统简析

热门文章

  1. Raki的读paper小记:A Concise Model for Multi-Criteria Chinese Word Segmentation with Transformer Encoder
  2. 用傅里叶分析得到频域信息 MATLAB,信号分析实验_傅里叶matlab实现.doc
  3. 关于 JVM 内存的 N 个问题(转)
  4. 【MySQL】mysql中any,in,some,all的区别
  5. SSM+Jedis初体验
  6. Python之 多重循环
  7. Codeforces 2A. Winner
  8. WEBFORM--第一讲
  9. struts2学到屎挫死-深入Struts2(2)--Action
  10. 微软面试题 麻将胡牌算法