(洛谷)P2709 小B的询问
题目描述
小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
说明
对于全部的数据,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的询问相关推荐
- 【刷题】洛谷 P2709 小B的询问
题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重 ...
- 洛谷P2709 小B的询问
莫队模版 本来想能不学莫队就不学,但是这次比赛被莫队卡得好惨,于是学了一发.. 先切道模板题.. 最普通的莫队就是把序列分块,然后按照询问所在的块来排序,减少指针的移动次数.. #include &l ...
- 洛谷 P2186 小Z的栈函数
洛谷 P2186 小Z的栈函数 题目 题目描述 小Z最近发现了一个神奇的机器,这个机器的所有操作都是通过维护一个栈来完成的,它支持如下11个操作: NUM X:栈顶放入X. POP:抛弃栈顶元素. I ...
- P2709 小B的询问
P2709 小B的询问 题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数 ...
- 洛谷 P4430 小猴打架
洛谷 P4430 小猴打架 题目描述 一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友.每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友.经过N-1次打 ...
- 2017提高组D1T1 洛谷P3951 小凯的疑惑
洛谷P3951 小凯的疑惑 原题 题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小 凯想 ...
- P2709 小B的询问 解题报告
P2709 小B的询问 解题报告 题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L-R],求 ∑ c i 2 \sum c_i^2 ∑ci2的值,其中i ...
- (最小割)洛谷P1361 小M的作物
洛谷P1361 小M的作物 思路: 这是一个两者取一的模型,将点集一分为二. 最小割在数值上等同于最大流.割去权值和最小的边,使图分成两部分,割下来的边权值和为最小割. 对于此题,先不考虑种在一起的情 ...
- 【01背包求方案数模板】洛谷 P1164 小A点菜
洛谷 P1164 小A点菜 https://www.luogu.org/problemnew/show/P1164 题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家--餐馆, ...
- 洛谷[P1120 小木棍]
洛谷[P1120 小木棍] 题目: 思路: 枚举小木棒可能的长度,从数组最大值开始枚举,这个值能被总长度整除才是可行的 在使用dfs枚举小木棒的每一种可能,如果不可能就找下一个可能的长度开始枚举 注意 ...
最新文章
- Spring Cloud 2020.0.5 发布
- 经纬度画轨迹图_实战Python制作炫酷的个人3D动态足迹图
- CF双端总决赛还是LGD总决赛?端游战队挺进决赛,手游已拿三连冠
- windows下,linux下c++生成文件夹
- 为什么喜欢听钢琴+小提琴
- 当音乐博士开始写代码...
- handsontable的单元格操作方法
- 2021-2025年中国DNA基因芯片行业市场供需与战略研究报告
- 【技术贴】Realtek HD声卡下QQ语音话筒没声音解决办法
- latex中求和符号的条件的换行处理
- jpg图片转换成pdf文件,方法步骤
- iOS开发面试—四面字节iOS客户端抖音隐私合规团队
- python之pip安装第三方库
- 便捷效率处理CAD转PDF方法你知道吗?
- MAC电脑 使用VMware中的虚拟机连接外网
- 2021年选择老域名的2点好处和购买老域名的4点技巧
- Fire Workflow 1.0正式版终于发布了
- php新浪微博 登录接口文档,新浪微博的账号登录及PHP api操作
- 基于Java+springboot+SSM的医疗报销系统的设计与实现
- [极客大挑战 2019]Knife
热门文章
- linux硬盘检测工具,linux 系统下磁盘检测工具e2fsck的使用
- java akka actor性能_akka-http - 如何通过Akka HTTP(Java)与Akka Actor进行交互 - 堆栈内存溢出...
- Template-Based 3D Model Fitting Using Dual-Domain Relaxation
- C++中用TinyXML对XML文件进行解析
- labelImg标注工具(win10安装)
- oracle一个库给多个用户名,配置oracle数据库服务器(为用户分配账户及空间和建立账户管理机制)...
- java shapefile 中文乱码_GeoTools操作Shape格式文件
- c语言数码管共阳极动态显示,编程实现共阳极八个数码管依次显示12345678
- java如果把字符串转成对象_为什么Java中的字符串对象是不可变的,有什么好处?...
- python 类和对象 有必要学吗_Python学习——对类和对象的初步理解,初识,与