原文地址:http://www.cnblogs.com/GXZlegend/p/6803821.html


题目描述

小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个询问的答案。

样例输入

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

样例输出

6
9
5
2


题解

莫队算法模板题,优雅的暴力

设原来有n个某颜色,加1后对答案的贡献为(n+1)^2-n^2=2*n+1,减1对答案的贡献为(n-1)^2-n^2=-(2*n-1)。

然后各种区间平移得到答案。

#include <cstdio>
#include <cmath>
#include <algorithm>
#define N 50010
using namespace std;
struct data
{
int l , r , b , p;
}a[N];
int c[N];
long long ans[N] , cnt[N];
bool cmp(data x , data y)
{
return x.b == y.b ? x.r < y.r : x.b < y.b;
}
int main()
{
int n , m , k , i , si , lp = 1 , rp = 0 , now = 0;
scanf("%d%d%d" , &n , &m , &k);
si = (int)sqrt(n);
for(i = 1 ; i <= n ; i ++ ) scanf("%d" , &c[i]);
for(i = 1 ; i <= m ; i ++ ) scanf("%d%d" , &a[i].l , &a[i].r) , a[i].b = (a[i].l - 1) / si , a[i].p = i;
sort(a + 1 , a + m + 1 , cmp);
for(i = 1 ; i <= m ; i ++ )
{
while(lp < a[i].l) now -= 2 * cnt[c[lp]] - 1 , cnt[c[lp]] -- , lp ++ ;
while(rp > a[i].r) now -= 2 * cnt[c[rp]] - 1 , cnt[c[rp]] -- , rp -- ;
while(lp > a[i].l) lp -- , now += 2 * cnt[c[lp]] + 1 , cnt[c[lp]] ++ ;
while(rp < a[i].r) rp ++ , now += 2 * cnt[c[rp]] + 1 , cnt[c[rp]] ++ ;
ans[a[i].p] = now;
}
for(i = 1 ; i <= m ; i ++ ) printf("%lld\n" , ans[i]);
return 0;
}

最新文章

  1. MYSQL进阶,新手变司机
  2. [JAVA]HTTP请求应答作输入输出
  3. python 3 学习笔记(一)
  4. 3Sum Closest
  5. NSDate如何获取一个月后的日期
  6. HTML里的id等属性命名需要注意
  7. php 编译安装选项
  8. 逻辑数据库设计 - 需要ID(谈主键Id)
  9. RedHat安装GCC问题-解决依赖问题
  10. 计蒜客NOIP模拟赛4 D2T1 鬼脚图
  11. 面向对象【林老师版】:__init__定制自己独有的特征(三)
  12. dyne*cm and N*m
  13. luogu1979 华容道 (dijkstra+bfs)
  14. Oracle中Merge的使用
  15. I2C总线信号时序总结【转】
  16. python学习day4之路文件的序列化和反序列化
  17. 转 CAS实现SSO单点登录原理
  18. PyCharm+selenium环境搭建报错:Traceback (most recent call last): TypeError: &#39;module&#39; object is not callable
  19. MySQL案例05:CPU负载优化
  20. java模块开发关键步骤

热门文章

  1. IE 兼容模式 设置 Meta Compatible 和 Iframe 子页面的关系
  2. Linux添加swap分区
  3. struts2入门第一天----------配置环境
  4. zabbix proxy安装配置
  5. Javascript简单特效及摘要
  6. composer安装教程(Linux版)
  7. C语言进阶——goto 和 void 的分析08
  8. Oozie wordcount实战
  9. 15.4,redis不重启,切换RDB备份到AOF备份
  10. OpenCV学习笔记(十一) 轮廓操作