P2709 小B的询问-莫队
- 思路 :依旧是 分块 块内按照 r 排序 不同块按照 L排序,处理好增加 删除对结果的影响即可。
#include<bits/stdc++.h>
using namespace std;
#define maxn 56789
int n,m,l,r,B,sum,len,k,col[maxn],cnt[maxn],ans[maxn];
struct node
{
int l,r,id;
bool operator <(const node &b)const
{
return b.l/B==l/B?r<b.r:l<b.l;
}
} a[maxn];
void add(int x)
{
if(x<1||x>k)return;
cnt[x]++;
sum+=(cnt[x]*cnt[x])-((cnt[x]-1)*(cnt[x]-1));
}
void del(int x)
{
if(x<1||x>k)return;
cnt[x]--;
sum-=((cnt[x]+1)*(cnt[x]+1))-((cnt[x])*(cnt[x]));
}
int main()
{
r=sum=len=0;
scanf("%d%d%d",&n,&m,&k);
for(int i=1; i<=n; i++)
scanf("%d",&col[i]);
for(int i=0; i<m; i++)
{
scanf("%d%d",&a[i].l,&a[i].r);
a[i].id=i;
}
B=n/sqrt(m);
sort(a,a+m);
l=1;
for(int i=0; i<m; i++)
{
while(l<a[i].l)
del(col[l++]);
while(r<a[i].r)
add(col[++r]);
while(l>a[i].l)
add(col[--l]);
while(r>a[i].r)
del(col[r--]);
ans[a[i].id]=sum;
}
for(int i=0; i<m; i++)
printf("%d\n",ans[i]);
return 0;
}
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的询问 莫队做法
题干 这个是用来学莫队的例题,洛谷详解 需要注意的一点,一定要分块!不然会慢很多(直接TLE) 其中分块只在排序的时候要用,并且是给问题右端点分块 再就是注意add与del函数里的操作,增加数量不提, ...
- BZOJ3781:小B的询问(莫队)
Description 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L ...
- 小B的询问 莫队分块
题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重 ...
- 【bzoj3781】小B的询问 莫队算法
原文地址:http://www.cnblogs.com/GXZlegend/p/6803821.html 题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L ...
- luogu 2709 小B的询问 莫队
题目链接 Description 小B有一个序列,包含\(N\)个\(1-K\)之间的整数.他一共有\(M\)个询问,每个询问给定一个区间\([L..R]\),求\(\sum_{i=1}^{K}c_i ...
- luogu 2709小b的询问--莫队
https://www.luogu.org/problemnew/show/P2709 无修改的莫队几乎没有什么太高深的套路,比较模板吧,大多都是在那两个函数上动手脚. 这题询问每一种数字数量的平方和 ...
- luoguP2709 小B的询问 [莫队]
题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重 ...
- 【luogu1709】小B的询问 - 莫队
题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重 ...
随机推荐
- Mycat实现mysql主从复制(读写分离)
数据库性能瓶颈主要原因: 随着用户数的增多,带来的是数据库连接的大幅度增长 随着业务体量的增长,表数据量(空间存储的问题)的大幅增长,其中涉及到索引的优化,mysql默认的索引是硬盘级别的,BTREE ...
- 《剑指offer》用两个栈实现队列
本题来自<剑指offer> 用两个栈实现队列 题目: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路: 队列定义:先进先出 栈定义:先进后出 要 ...
- Django将默认的SQLite更换为MySQL
1.注释默认的SQLite3配置: blogproject/settings.py ''' DATABASES = { 'default': { 'ENGINE': 'django.db.backen ...
- Android定位元素与操作
一.常用识别元素的工具 uiautomator:Android SDK自带的一个工具,在tools目录下 monitor:Android SDK自带的一个工具,在tools目录下 Appium Ins ...
- txt提取相同内容、不同内容
findstr >相同部分.txt findstr >%~n2多余部分.txt findstr >%~n1多余部分.txt
- 51 Nod 1256 乘法逆元(数论:拓展欧几里得)
1256 乘法逆元 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出2个数M和N(M < N),且M与N互质,找出一个数K满足0 < K ...
- 5分钟了解swagger
5分钟了解swagger https://blog.csdn.net/i6448038/article/details/77622977 随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,变 ...
- autofac 创建实例方法总结
1.InstancePerDependency 对每一个依赖或每一次调用创建一个新的唯一的实例.这也是默认的创建实例的方式. 官方文档解释:Configure the component so tha ...
- CentOS6 安装gnutls
所有用的的包:https://pan.baidu.com/s/1EQYf3gsK_xT6kCAjrVs2aQ wget http://download.savannah.gnu.org/release ...
- UE4 ShooterGame Demo的开火的代码
之前一直没搞懂按下鼠标左键开火之后,代码的逻辑是怎么走的,今天看懂了之前没看懂的部分,进了一步 ShooterCharacter.cpp void AShooterCharacter::OnStart ...