题目描述

小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;
}

  

转载于:https://www.cnblogs.com/-xiangyang/p/9412834.html

(洛谷)P2709 小B的询问相关推荐

  1. 【刷题】洛谷 P2709 小B的询问

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

  2. 洛谷P2709 小B的询问

    莫队模版 本来想能不学莫队就不学,但是这次比赛被莫队卡得好惨,于是学了一发.. 先切道模板题.. 最普通的莫队就是把序列分块,然后按照询问所在的块来排序,减少指针的移动次数.. #include &l ...

  3. 洛谷 P2186 小Z的栈函数

    洛谷 P2186 小Z的栈函数 题目 题目描述 小Z最近发现了一个神奇的机器,这个机器的所有操作都是通过维护一个栈来完成的,它支持如下11个操作: NUM X:栈顶放入X. POP:抛弃栈顶元素. I ...

  4. P2709 小B的询问

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

  5. 洛谷 P4430 小猴打架

    洛谷 P4430 小猴打架 题目描述 一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友.每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友.经过N-1次打 ...

  6. 2017提高组D1T1 洛谷P3951 小凯的疑惑

    洛谷P3951 小凯的疑惑 原题 题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小 凯想 ...

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

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

  8. (最小割)洛谷P1361 小M的作物

    洛谷P1361 小M的作物 思路: 这是一个两者取一的模型,将点集一分为二. 最小割在数值上等同于最大流.割去权值和最小的边,使图分成两部分,割下来的边权值和为最小割. 对于此题,先不考虑种在一起的情 ...

  9. 【01背包求方案数模板】洛谷 P1164 小A点菜

    洛谷 P1164 小A点菜 https://www.luogu.org/problemnew/show/P1164 题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家--餐馆, ...

  10. 洛谷[P1120 小木棍]

    洛谷[P1120 小木棍] 题目: 思路: 枚举小木棒可能的长度,从数组最大值开始枚举,这个值能被总长度整除才是可行的 在使用dfs枚举小木棒的每一种可能,如果不可能就找下一个可能的长度开始枚举 注意 ...

最新文章

  1. Spring Cloud 2020.0.5 发布
  2. 经纬度画轨迹图_实战Python制作炫酷的个人3D动态足迹图
  3. CF双端总决赛还是LGD总决赛?端游战队挺进决赛,手游已拿三连冠
  4. windows下,linux下c++生成文件夹
  5. 为什么喜欢听钢琴+小提琴
  6. 当音乐博士开始写代码...
  7. handsontable的单元格操作方法
  8. 2021-2025年中国DNA基因芯片行业市场供需与战略研究报告
  9. 【技术贴】Realtek HD声卡下QQ语音话筒没声音解决办法
  10. latex中求和符号的条件的换行处理
  11. jpg图片转换成pdf文件,方法步骤
  12. iOS开发面试—四面字节iOS客户端抖音隐私合规团队
  13. python之pip安装第三方库
  14. 便捷效率处理CAD转PDF方法你知道吗?
  15. MAC电脑 使用VMware中的虚拟机连接外网
  16. 2021年选择老域名的2点好处和购买老域名的4点技巧
  17. Fire Workflow 1.0正式版终于发布了
  18. php新浪微博 登录接口文档,新浪微博的账号登录及PHP api操作
  19. 基于Java+springboot+SSM的医疗报销系统的设计与实现
  20. [极客大挑战 2019]Knife

热门文章

  1. linux硬盘检测工具,linux 系统下磁盘检测工具e2fsck的使用
  2. java akka actor性能_akka-http - 如何通过Akka HTTP(Java)与Akka Actor进行交互 - 堆栈内存溢出...
  3. Template-Based 3D Model Fitting Using Dual-Domain Relaxation
  4. C++中用TinyXML对XML文件进行解析
  5. labelImg标注工具(win10安装)
  6. oracle一个库给多个用户名,配置oracle数据库服务器(为用户分配账户及空间和建立账户管理机制)...
  7. java shapefile 中文乱码_GeoTools操作Shape格式文件
  8. c语言数码管共阳极动态显示,编程实现共阳极八个数码管依次显示12345678
  9. java如果把字符串转成对象_为什么Java中的字符串对象是不可变的,有什么好处?...
  10. python 类和对象 有必要学吗_Python学习——对类和对象的初步理解,初识,与