显然若一个数大于n就不可能是答案。

 #include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <map>
#include <cmath>
using namespace std;
const int Maxn=;
struct Info{int l,r,Id;}P[Maxn];
int a[Maxn],U[Maxn],Pos[Maxn],Belong[Maxn],Num[Maxn],L[Maxn],R[Maxn],Ans[Maxn];
int n,m,Block,tot;
inline bool cmp(Info A,Info B)
{
if (Pos[A.l]!=Pos[B.l]) return Pos[A.l]<Pos[B.l];
return A.r<B.r;
}
inline void Add(int x)
{
if (x>n) return;
if (U[x]==) Num[Belong[x]]++;
U[x]++;
}
inline void Del(int x)
{
if (x>n) return;
U[x]--;
if (U[x]==) Num[Belong[x]]--;
}
inline int Query()
{
int i; for (i=;i<=tot;i++) if (Num[i]!=Block) break;
for (int j=L[i];j<=R[i];j++) if (!U[j]) return j;
}
int main()
{
scanf("%d%d",&n,&m); Block=(int)sqrt(n); tot=n/Block+;
for (int i=;i<=n;i++)
{
Belong[i]=i/Block+;
if (!L[Belong[i]]) L[Belong[i]]=i;
R[Belong[i]]=i;
}L[]=;
for (int i=;i<=n;i++) Pos[i]=i/Block+;
for (int i=;i<=n;i++) scanf("%d",&a[i]);
for (int i=;i<=m;i++) scanf("%d%d",&P[i].l,&P[i].r),P[i].Id=i;
sort(P+,P+m+,cmp); int l=,r=;
for (int i=;i<=m;i++)
{
while (r<P[i].r) Add(a[++r]);
while (l<P[i].l) Del(a[l++]);
while (l>P[i].l) Add(a[--l]);
while (r>P[i].r) Del(a[r--]);
Ans[P[i].Id]=Query();
}
for (int i=;i<=m;i++) printf("%d\n",Ans[i]);
return ;
}

C++

BZOJ 3339 && BZOJ 3585 莫队+权值分块的更多相关文章

  1. 2019.01.08 bzoj3809: Gty的二逼妹子序列(莫队+权值分块)

    传送门 题意:多组询问,问区间[l,r]中权值在[a,b]间的数的种类数. 看了一眼大家应该都知道要莫队了吧. 然后很容易想到用树状数组优化修改和查询做到O(mnlogamax)O(m\sqrt nl ...

  2. POJ 2104 - 主席树 / 询问莫队+权值分块

    传送门 题目大意应该都清楚. 今天看到一篇博客用分块+莫对做了这道题,直接惊呆了. 首先常规地离散化后将询问分块,对于某一询问,将莫队指针移动到指定区间,移动的同时处理权值分块的数字出现次数(单独.整 ...

  3. BZOJ 3339: Rmq Problem 莫队算法

    3339: Rmq Problem 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3339 Description n个数,m次询问l,r ...

  4. 【带修莫队】【权值分块】bzoj3196 Tyvj 1730 二逼平衡树

    这题用了三种算法写: 分块+二分:O(n*sqrt(n*log(n)) 函数式权值分块:O(n*sqrt(n)) 带修莫队+权值分块:O(n5/3) 结果……复杂度越高的实际上跑得越快……最后这个竟然 ...

  5. 【莫队算法】【权值分块】bzoj2223 [Coci 2009]PATULJCI

    不带修改主席树裸题<=>莫队+权值分块裸题. 复杂度O(m*sqrt(n)). P.S.题目描述坑爹,第二个数是权值的范围. #include<cstdio> #include ...

  6. 2018.11.07 NOIP训练 L的鞋子(权值分块+莫队)

    传送门 乱搞题. 我直接对权值分块+莫队水过了. 不过调了30min30min30min发现ststst表挂了是真的不想说什么233. 代码

  7. 【莫队算法】【权值分块】bzoj3920 Yuuna的礼物

    [算法一] 暴力. 可以通过第0.1号测试点. 预计得分:20分. [算法二] 经典问题:区间众数,数据范围也不是很大,因此我们可以: ①分块,离散化,预处理出: <1>前i块中x出现的次 ...

  8. 【DFS序】【莫队算法】【权值分块】bzoj2809 [Apio2012]dispatching

    题意:在树中找到一个点i,并且找到这个点子树中的一些点组成一个集合,使得集合中的所有点的c之和不超过M,且Li*集合中元素个数和最大 首先,我们将树处理出dfs序,将子树询问转化成区间询问. 然后我们 ...

  9. 【莫队算法】【权值分块】poj2104 K-th Number / poj2761 Feed the dogs

    先用莫队算法保证在询问之间转移的复杂度,每次转移都需要进行O(sqrt(m))次插入和删除,权值分块的插入/删除是O(1)的. 然后询问的时候用权值分块查询区间k小值,每次是O(sqrt(n))的. ...

随机推荐

  1. Jenkins 命令

    Jenkins 服务集群环境的启动命令 #必须在root下启动 sh /home/jenkins/tomcat/bin/startup.sh dubbo服务注册中心 zookeeper启动命令 /we ...

  2. a链接中套a链接

    <a href="baidu.com"> <div> <div class="title">百度</div> & ...

  3. 使用wait()与notify()实现线程间协作

    调用sleep()和yield()的时候锁并没有被释放,而调用wait()将释放锁.这样另一个任务(线程)可以获得当前对象的锁,从而进入它的synchronized方法中.可以通过notify()/n ...

  4. 框架 Onboard-引导页样式制作库

    设置背景图片或者背景movie,然后在它们之上生成数个ViewController,默认是顶部一张图片,下面是标题和详细介绍,最下面是按钮和pagegithub地址  https://github.c ...

  5. Entity Framework – (复数)Plural and (单数)Singular 表名Table names

    By default, the Entity Framework will assume that all of the names of your tables in your database a ...

  6. spark发行版笔记11

    本期概览: ReceiverTracker架构设计 消息循环系统 ReceiverTracker具体的实现 Spark Streaming作为Spark Core基础 架构之上的一个应用程序,其中的R ...

  7. 浅谈对ionic项目的理解

    在思考怎么将客户端app连接到服务器的时候,就在想ionic项目的本质是什么,一开始因为ionic serve这一命令,我以为它自己就是个服务器,但是后来一细想又感觉不是这样,不然客户端又该怎么和服务 ...

  8. Bootstrap <基础七>按钮

    任何带有 class .btn 的元素都会继承圆角灰色按钮的默认外观.但是 Bootstrap 提供了一些选项来定义按钮的样式,具体如下表所示: 以下样式可用于<a>, <butto ...

  9. SAE使用心得1

    最近准备在新浪云端SAE上挂点自己的小网站,这样自己开发个什么东西别人能用.但是第一次接触SAE,遇到一些问题,记下来给大家看. 1.安装的svn版本不能高于 1.8,否则无法向SAE提交代码. 2. ...

  10. sprig里的controller之间的跳转的问题

    学习spring的controller,发现controller之间的跳转有些地方搞的不是很清楚,如果通过controller的return语句实现跳转的话,会造成request的丢失:具体怎么回事首 ...