题目背景

鸟哥(faebdc)自从虐暴NOIP2013以来依然勤奋学习,每天上各种OJ刷题,各种比赛更是不在话下。但这天他遇到了一点小小的麻烦……在一届“Orz鸟哥杯”上,题目是在是太多了!足有n道!鸟哥看得头晕眼花,他需要你的帮助。

每道题都有一个难度值ai,由于wangxz神犇已经提前帮助鸟哥将这些难度值升序排列,所以鸟哥并不想知道哪些题难度低或者高,他只想知道在某些题目ai,ai+1,…,aj中,出现最多的难度值出现的次数(他为啥想知道这么奇葩的东西呢……自己去问)。

你的任务就是对于鸟哥的每一次询问(i,j),告诉他在从ai到aj这j-i+1道题之中,出现最多的难度值出现的次数(询问共有q次)。

如果你成功地帮助了鸟哥,鸟哥将会带你通过省选。

题目描述

给出一个升序排列的整数数组a1,a2,…an,你的任务是对于鸟哥的一系列询问(i,j),回答ai,ai+1,…aj中出现次数最多的值所出现的次数。

输入格式

输入仅包含一组数据。

第一行为两个整数n,q(1<=n<=100000,1<=q<=200000)。第二行包含n个升序排列的整数a1,a2,…,an(-100000<=ai<=100000),代表每一道题的难度值。以下q行每行包含两个整数i和j(1<=i<=j<=n),代表鸟哥询问的区间。

输出格式

对于每次询问,单独输出一行,该行仅有一个整数,表示该区间内出现最多的数值所出现的次数。

输入输出样例

输入 #1
9 1

1 1 1 2 2 3 3 4 4

3 8
输出 #1
2

说明/提示

各个测试点1s

思路:

  莫队,求众数出现的次数,cnt[]存次数,sum存的是出现次数为某个值得输的个数,如果此时得sum[]为零,则说明把此数删去,没有其他数的众数为此时的答案,答案必须减一,但减一后的sum不用加,因为之前在加到最大值之前加过一次,从之前更新过来的时候,已经加过了。

代码:

#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<cmath>
#define N 2000000
using namespace std;
int a[N],b[N],len,n,m,tot[N];
int sum[N],cnt[N],ans,Ans[N];
int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
void add(int x)
{
cnt[x]++;
sum[cnt[x]]++;
ans=max(ans,cnt[x]);
}
void del(int x)
{
sum[cnt[x]]--;
if(!sum[cnt[x]])
if(ans==cnt[x])
{
ans--;
}
cnt[x]--;
}
struct node{
int l,r,pos,id;
bool operator < (const node &a)const
{
if(pos==a.pos)return r<a.r;
return pos<a.pos;
}
}e[N];
int main()
{
scanf("%d%d",&n,&m);
len=sqrt(n);
for(int i=1;i<=n;i++)a[i]=b[i]=read();
sort(b+1,b+n+1);
int le=unique(b+1,b+n+1)-b-1;
for(int i=1;i<=n;i++) a[i]=lower_bound(b+1,b+le+1,a[i])-b;
for(int i=1;i<=m;i++)
{
scanf("%d%d",&e[i].l,&e[i].r);
e[i].id=i;
e[i].pos=(e[i].l-1)/len+1;
}
int l=1,r=0;
sort(e+1,e+m+1);
for(int i=1;i<=m;i++)
{
while(l<e[i].l)del(a[l++]);
while(r>e[i].r)del(a[r--]);
while(l>e[i].l)add(a[--l]);
while(r<e[i].r)add(a[++r]);
Ans[e[i].id]=ans;
}
for(int i=1;i<=m;i++) printf("%d\n",Ans[i]);
return 0;
}

【luogu1797】faebdc的烦恼-莫队的更多相关文章

  1. faebdc的烦恼 莫队

    faebdc的烦恼 莫队 题面 思路 有点难想的莫队. 首先我们肯定要一个cnt[i]记录难度i出现的次数,但是我们发现每次删去一个难度后,如果那个难度的个数恰好是当前最多次数,我们就可能要更新一下答 ...

  2. 普通莫队--洛谷P1997 【faebdc的烦恼】

    离散化+莫队 cnt数组表示某个颜色出现的次数 sum数组表示某个数量出现的颜色种类 其它细节问题就按照莫队的模板来的 #include<cstdio> #include<algor ...

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

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

  4. NBUT 1457 莫队算法 离散化

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

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

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

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

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

  7. NPY and girls-HDU5145莫队算法

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

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

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

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

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

随机推荐

  1. 理解 is_callable

    官方解释: (PHP 4 >= 4.0.6, PHP 5, PHP 7) is_callable — 检测参数是否为合法的可调用结构. 说明 is_callable ( callable $na ...

  2. 读取一整行,保留空白,直到遇到换行符:getline()

  3. MD5加密处理

    无论传送过程和存储方式,都是以明文的方式,很不安全!一旦泄漏,将会造成很大的损失! 插件名称jQuery.MD5.js: /** * jQuery MD5 hash algorithm functio ...

  4. C# xml序列化 datatime字段

    [XmlIgnore] public DateTime ApplicationDatetime { get; set; } [XmlElement("ApplicationDatetime& ...

  5. webapi IHttpActionResult无引用和config.MapHttpAttributeRoutes()无引用解决办法

    1. 打开NuGet,打开方法 工具->库程序包管理器->程序包管理器控制台,如下图所示: 2. 输入如下命令Install-Package Microsoft.AspNet.WebApi ...

  6. 组装技术的新进展 New advances in sequence assembly.

    组装技术的新进展 1.测序和组装 很难想象今天距离提出测序和组装已经有40年啦.我们回头来看一下这个问题. “With modern fast sequencing techniques and su ...

  7. jQuery_jQuery的两把利器

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. Django rest-framework框架-组件之路由

    路由: a. url(r'^(?P<version>[v1|v2]+)/v1/$',views.ViewView.as_view()) url(r'^(?P<version>[ ...

  9. No valid host was found. There are not enough hosts available-----openstack建虚拟机直接报错

    目录 No valid host was found. There are not enough hosts available-----openstack建虚拟机直接报错 一.问题现象: 二.解决思 ...

  10. Ubuntu18.0 解决python虚拟环境中不同用户下或者python多版本环境中指定虚拟环境的使用问题

    一. 不同用户下配置virtualenvwrapper的问题 问题描述: 安装virtualnev和virtualnevwrapper之后,在.bashrc进行virtualenvwrapper的相关 ...