3781: 小B的询问

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 1064  Solved: 713
[Submit][Status][Discuss]

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

很简单的O(1)修改

莫队模板题。。

#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
#define LL long long
typedef struct Res
{int x;int y, id;
}Res;
Res s[100005];
int a[100005], bel[100005];
LL ans[100005], sum[100005];
bool comp(Res a, Res b)
{if(bel[a.x]<bel[b.x] || bel[a.x]==bel[b.x] && a.y<b.y)return 1;return 0;
}
int main(void)
{LL val;int n, m, k, i, x, y, B, L, R;scanf("%d%d%d", &n, &m, &k);for(i=1;i<=n;i++)scanf("%d", &a[i]);for(i=1;i<=m;i++){scanf("%d%d", &s[i].x, &s[i].y);s[i].id = i;}B = sqrt(n)+1;x = 0, y = 1;for(i=1;i<=n;i++){x++;bel[i] = y;if(x>=B)x = 0, y++;}sort(s+1, s+m+1, comp);L = R = 1;sum[a[1]] = val = 1;for(i=1;i<=m;i++){while(L<s[i].x){val -= (sum[a[L]])*(sum[a[L]]);sum[a[L]]--;val += (sum[a[L]])*(sum[a[L]]);L++;}while(L>s[i].x){L--;val -= (sum[a[L]])*(sum[a[L]]);sum[a[L]]++;val += (sum[a[L]])*(sum[a[L]]);}while(R<s[i].y){R++;val -= (sum[a[R]])*(sum[a[R]]);sum[a[R]]++;val += (sum[a[R]])*(sum[a[R]]);}while(R>s[i].y){val -= (sum[a[R]])*(sum[a[R]]);sum[a[R]]--;val += (sum[a[R]])*(sum[a[R]]);R--;}ans[s[i].id] = val;}for(i=1;i<=m;i++)printf("%lld\n", ans[i]);return 0;
}

bzoj 3781: 小B的询问(莫队)相关推荐

  1. BZOJ 3781: 小B的询问 [莫队]

    求区间每种颜色出现次数平方和 写裸题练手 #include <iostream> #include <cstdio> #include <algorithm> #i ...

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

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

  3. 【luogu1709】小B的询问 - 莫队

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

  4. P2709 小B的询问 莫队入门

    题目描述 小B 有一个长为 n 的整数序列 a,值域为 [1,k]. 他一共有 m 个询问,每个询问给定一个区间 [l,r],求: sigma(i=1-k)ci^2 其中 ci​ 表示数字 i 在 [ ...

  5. [bzoj 2038 OR 清橙A1206 小Z的袜子]莫队算法

    [bzoj 2038 OR 清橙A1206 小Z的袜子]莫队算法 题意描述:[清橙A1206 时限:1s] [bzoj 2038 时限:20s] 题意描述: 作为一个生活散漫的人,小Z每天早上都要耗费 ...

  6. P1494 [国家集训队]小Z的袜子/莫队学习笔记(误

    P1494 [国家集训队]小Z的袜子 题目描述 作为一个生活散漫的人,小\(Z\)每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小\(Z\)再也无法忍受这恼人的找袜子过程,于是他 ...

  7. 清橙A1206 小Z的袜子(莫队算法)

    A1206. 小Z的袜子 时间限制:1.0s   内存限制:512.0MB   总提交次数:744   AC次数:210   平均分:44.44 将本题分享到:        查看未格式化的试题    ...

  8. 洛谷P1494 [国家集训队]小Z的袜子 莫队

    题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小Z把这N只袜子从1到N编 ...

  9. 【bzoj5016】[Snoi2017]一个简单的询问 莫队算法

    题目描述 给你一个长度为N的序列ai,1≤i≤N和q组询问,每组询问读入l1,r1,l2,r2,需输出 get(l,r,x)表示计算区间[l,r]中,数字x出现了多少次. 输入 第一行,一个数字N,表 ...

最新文章

  1. 打工人,从 JMM 透析 volatile 与 synchronized 原理
  2. Hive代码组织及架构简单介绍
  3. java计算机全部代码_(Java)谁有计算器的完整代码?
  4. 放在NSArray、NSDictionary等容器内的对象Item,Item中的property在程序运行过程中被无故释放...
  5. java指导手册,Java 注解指导手册 – 终极向导
  6. QTreeWidgetItem 类的翻译
  7. 一张图搞定SDF的概念
  8. 贴一个CMemDC 代码,这东西真不错噢,短小精悍,可谓极品
  9. CMake编译opencv
  10. HTML5 Canvas 高仿逼真 3D 布料图案效果
  11. 14-win10下ElasticSearch.6.1.0与head、Kibana、X-Pack、SQL、IK、PINYIN插件的配置安装
  12. 【实践】图片主题模型在推荐系统的应用实践.pdf(附下载链接)
  13. 测试Leader应该做哪些事
  14. 激光雷达电力巡基于机载激光雷达技术的输电线路树障普查及预警
  15. C语言实训心得体会(精选4篇)
  16. 诚之和:谁在抢救瑞幸咖啡?
  17. 杭州5.8万人面临饮水难 一村庄居民一月未沐浴
  18. WIN7修改“桌面”存储位置
  19. [置顶] 不写周报才是一件很嘻哈的事
  20. 涂鸦智能校招——前端

热门文章

  1. python自动化办公都能做什么-盘点使用Python进行自动化办公所需要的知识点
  2. 自学python好找工作么-转行去培训班学Python好找工作吗?老男孩教育
  3. 语音识别技术的研究难点以及未来发展方向
  4. Vue源码分析 - watcher.js
  5. iphone11返回上一级手势怎么设置_华为手机的这五种导航方式,你更习惯哪一种?怎么切换?...
  6. RocketMQ 实战-SpringBoot整合RocketMQ
  7. 【狂神Mybatis笔记】配置解析
  8. 【深度优先搜索】计蒜客:中国象棋
  9. python怎么保存为py文件_将python保存到运行的py文件目录中创建的文件夹中
  10. 职称英语与计算机考试试题,2020年职称计算机考试模拟选择试题及答案.doc