用莫队比直接做快了很多。。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
#include<algorithm>
#define maxn 100005
int a[maxn],b[maxn],c[maxn],num[maxn];//原始数组,排序后的数组,离散后的数组,离散后的数组中元素出现的次数
int s;//块长度
struct Query{
int l,r,id;
bool operator<(const Query &a)const{
if(l/s==a.l/s) return r<a.r;
return l/s<a.l/s;
}
}q[maxn];
int ans[maxn];
int main(){
int n,m;
while(scanf("%d%d",&n,&m)==){
s=(int)sqrt(1.0*n);
for(int i=;i<=n;i++)
scanf("%d",&a[i]),b[i]=a[i];
sort(b+,b+n+);
for(int i=;i<=n;i++)
c[i]=lower_bound(b+,b++n,a[i])-b;
for(int i=;i<=m;i++)
scanf("%d%d",&q[i].l,&q[i].r),q[i].id=i;
sort(q+,q+m+);
//处理每个询问
int l=,r=,tmp=;
for(int i=;i<=m;i++){
while(r<q[i].r){//右边界拓展
r++;
if(num[c[r]]==a[r]-) tmp++;
else if(num[c[r]]==a[r]) tmp--;
num[c[r]]++;
}
while(r>q[i].r){//右边界往回缩
if(num[c[r]]==a[r]) tmp--;
else if(num[c[r]]==a[r]+) tmp++;
num[c[r]]--;
r--;
}
while(l<q[i].l){//左边界往回缩
if(num[c[l]]==a[l]) tmp--;
else if(num[c[l]]==a[l]+) tmp++;
num[c[l]]--;
l++;
}
while(l>q[i].l){//左边界拓展
l--;
if(num[c[l]]==a[l]-) tmp++;
else if(num[c[l]]==a[l]) tmp--;
num[c[l]]++;
}
ans[q[i].id]=tmp;
}
for(int i=;i<=m;i++)
printf("%d\n",ans[i]);
}
return ;
}

cf220B莫队的更多相关文章

  1. BZOJ 3289: Mato的文件管理[莫队算法 树状数组]

    3289: Mato的文件管理 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 2399  Solved: 988[Submit][Status][Di ...

  2. NBUT 1457 莫队算法 离散化

    Sona Time Limit:5000MS     Memory Limit:65535KB     64bit IO Format: Submit Status Practice NBUT 145 ...

  3. 【填坑向】bzoj2038小Z的袜子 莫队

    学莫队必做题,,,但是懒得写.今天来填个坑 莫队水题 莫队实际上就是按一个玄学顺序来离线计算询问,保证复杂度只会多一个n1/2,感觉是玄学(离线算法都很玄学) 易错点:要开long long(卡我半天 ...

  4. BZOJ 2038: [2009国家集训队]小Z的袜子(hose) [莫队算法]【学习笔记】

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 7687  Solved: 3516[Subm ...

  5. NPY and girls-HDU5145莫队算法

    Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description ...

  6. Codeforces617 E . XOR and Favorite Number(莫队算法)

    XOR and Favorite Number time limit per test: 4 seconds memory limit per test: 256 megabytes input: s ...

  7. Bzoj 2038---[2009国家集训队]小Z的袜子(hose) 莫队算法

    题目链接 http://www.lydsy.com/JudgeOnline/problem.php?id=2038 Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色 ...

  8. 【BZOJ 3735】苹果树 树上莫队(树分块+离线莫队+鬼畜的压行)

    2016-05-09 UPD:学习了新的DFS序列分块,然后发现这个东西是战术核导弹?反正比下面的树分块不知道要快到哪里去了 #include<cmath> #include<cst ...

  9. 【BZOJ 2038】【2009 国家集训队】小Z的袜子(hose) 分块+莫队

    $SDOI2016Day-1$临时抱佛脚学习一下莫队算法$233$ 我预感到自己省选要爆0hhh #include<cmath> #include<cstdio> #inclu ...

随机推荐

  1. (转)Go中的string和[]byte对比

    本文转自:https://sheepbao.github.io/post/golang_byte_slice_and_string/ 作者:boya 声明:本文目的仅仅作为个人mark,所以在翻译的过 ...

  2. <!--more-->搭建的博客设置主页内容高度

    用 markdown写文章时插入<!--more-->,文章会自动从插入的位置截断,也就是说在博客中只显示<!--more-->之前的内容,点击阅读全文之后会显示所有内容.

  3. javascript 获取节点元素的封装

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. vue实现一个简单的选项卡

    用vue来实现一个小的选项卡切换,比之前要简单.方便很多. <!DOCTYPE html> <html lang="en"> <head> &l ...

  5. C# Dictionary序列化/反序列化

    [Serializable] public class SerializableDictionary<TKey, TValue> : Dictionary<TKey, TValue& ...

  6. C# 生成一个带数字的饼图

    using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D ...

  7. 计算机网络之互联网|因特网|万维网|HTTP|HTML之间的关系辨析

    本博文基于知乎"Web 是什么意思?"一问而引起.(本文均属于博主从知乎上自身所答搬运而至). 如无特殊声明,括号()内以分号分隔的名词均等效. 本文如无特殊引用声明,则所有内容版 ...

  8. JavaScript之创建动态脚本

    //option= {type,src,text,isCreateScriptBySrc} function createDynamicScript(option){ var script = doc ...

  9. cdn.dns,cms

    CDN CDN的全称是Content Delivery Network,即内容分发网络.其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快.更稳定.通过在网络各 ...

  10. jQuery - 几种异步提交方式

    $.post(url,params,callback); $.post("${ctx}/role/grant", {userId : $("#userId"). ...