题目链接:https://www.luogu.org/problemnew/show/P2709

题目大意:中文题目

具体思路:莫队入门题,按照离线的方式打的,对每一个区间进行分块和编号,如果在同一个块里面就按照右端点从小到大排列,如果不在同一个块里面就按照块的下标开始排序,这里的块是按照数列分块里面的方法来进行的,查询每个区间的值就可以了。

对于l,r指针的移动,当l<q[i].l的时候,我们需要将l指针往右移动,所以假设t为当前的颜色,ans为未移动的时候的值,首先去除掉原来的值的影响,ans-=t*t,然后再加上新的值的影响,ans+=(t+1)*(t+1),因为我们是先进行加减操作,所以这种情况下ans=-(t-1)*(t-1)+t*t=2*t-1.其他情况同理。

AC代码:

 #include<iostream>
#include<stack>
#include<cstring>
#include<iomanip>
#include<stdio.h>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;
# define ll long long
const int maxn = 2e5+;
int a[maxn];
struct node{
int l,r,pos,id;
bool friend operator < (node t1,node t2){
if(t1.pos==t2.pos)return t1.r<t2.r;
return t1.pos<t2.pos;
}
}q[maxn];
int ans[maxn],vis[maxn];
int main(){
int n,m,k;
scanf("%d %d %d",&n,&m,&k);
int block=(int)sqrt(n);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
}
for(int i=;i<=m;i++){
scanf("%d %d",&q[i].l,&q[i].r);
q[i].pos=(q[i].l-)/block+;
q[i].id=i;
}
sort(q+,q+m+);
int tmp=;
int l=,r=;
for(int i=;i<=m;i++){
while(l<q[i].l)vis[a[l]]--,tmp-=(*vis[a[l]]+),l++;
while(l>q[i].l)l--,vis[a[l]]++,tmp+=*vis[a[l]]-;
while(r<q[i].r)r++,vis[a[r]]++,tmp+=*vis[a[r]]-;
while(r>q[i].r)vis[a[r]]--,tmp-=*vis[a[r]]+,r--;
ans[q[i].id]=tmp;
}
for(int i=;i<=m;i++){
printf("%d\n",ans[i]);
}
return ;
}

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的询问 莫队做法

    题干 这个是用来学莫队的例题,洛谷详解 需要注意的一点,一定要分块!不然会慢很多(直接TLE) 其中分块只在排序的时候要用,并且是给问题右端点分块 再就是注意add与del函数里的操作,增加数量不提, ...

  3. P2709 小B的询问-莫队

    思路 :依旧是 分块 块内按照 r 排序 不同块按照 L排序,处理好增加 删除对结果的影响即可. #include<bits/stdc++.h> using namespace std; ...

  4. BZOJ3781:小B的询问(莫队)

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

  5. 小B的询问 莫队分块

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

  6. 【bzoj3781】小B的询问 莫队算法

    原文地址:http://www.cnblogs.com/GXZlegend/p/6803821.html 题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L ...

  7. luogu 2709 小B的询问 莫队

    题目链接 Description 小B有一个序列,包含\(N\)个\(1-K\)之间的整数.他一共有\(M\)个询问,每个询问给定一个区间\([L..R]\),求\(\sum_{i=1}^{K}c_i ...

  8. luogu 2709小b的询问--莫队

    https://www.luogu.org/problemnew/show/P2709 无修改的莫队几乎没有什么太高深的套路,比较模板吧,大多都是在那两个函数上动手脚. 这题询问每一种数字数量的平方和 ...

  9. luoguP2709 小B的询问 [莫队]

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

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

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

随机推荐

  1. 中性SNP的突变年龄评估(estimate the average age of a neutral two-allele polymorphism)

    假设中性突变的频率分别为P和1-P,则其突变年龄为:-4Ne[p*( logep)+(1-p)* loge (1-p)] The average age of a neutral two-allele ...

  2. Day5--Python--字典

    字典1.什么是字典 dict. 以{}表示,每一项用逗号隔开,内部元素用key:value的形式来保存数据 {'jj':'林俊杰','jay':'周杰伦'} 查询效率非常高,通过key来查找元素 内部 ...

  3. IDEA和WebStorm破解教程--激活n年(随时更新)

    首先,打开蓝雨的官网--->http://idea.lanyus.com/,找到这个jar包  之后,去官网下载IDEA--->https://www.jetbrains.com/idea ...

  4. Codeforces Round #529 (Div. 3) D. Circular Dance

    传送门 题意: 有 n 个孩子编号为 1~n ,绕着圣诞树 dance: 编号为 i 的孩子可以记住ai1,ai2两个小孩,ai1,ai2是 i 在顺时针方向的相邻的两个小孩,但ai1,ai2不一定是 ...

  5. (Bash博弈 大数) 51nod1068 Bash游戏 V3

    1068 Bash游戏 V3   有一堆石子共有N个.A B两个人轮流拿,A先拿.每次拿的数量只能是2的正整数次幂,比如(1,2,4,8,16....),拿到最后1颗石子的人获胜.假设A B都非常聪明 ...

  6. jquery 实现按回车键登录功能的写法

    <script> //登录的逻辑函数 自己写 function submitFuc(){ var loginName= $("#loginName").val(); v ...

  7. bzoj3237 cdq分治+可撤销并查集

    https://www.lydsy.com/JudgeOnline/problem.php?id=3237 年轻的花花一直觉得cdq分治只能用来降维,不料竟然可以用来分治询问 N<=100000 ...

  8. flask get和post请求使用

    直接看代码 #-*-coding:utf-8-*- from flask import Flask,url_for,redirect,render_template,request app = Fla ...

  9. JavaScript中调皮的undefined

    JavaScript中调皮的undefined 在JavaScript中undefined只是一个标识符,不是关键字,这个很不靠谱的标识符还不能像其他符号一样随意使用,一方面是需要它的原始值保持不变, ...

  10. Css单位px,rem,em,vw,vh的区别

    px px就是pixel像素的缩写,相对长度单位,网页设计常用的基本单位.像素px是相对于显示器屏幕分辨率而言的 em em是相对长度单位.相对于当前对象内文本的字体尺寸(参考物是父元素的font-s ...