题意翻译

给出一个长度为n 的数列,a1​​ a2​​ ,...an​ ,有q 个询问,每个询问给出数对(i,j),需要你给出ai​​

ai+1​​ ,...,aj​​ 这一段中有多少不同的数字

题目描述

English VietnameseGiven a sequence of n numbers a 1  a 2 ..., a n​ and a number of d-queries. A d-query is a pair (i, j) (1 ≤ i ≤ j ≤ n). For each d-query (i, j), you have to return the number of distinct elements in the subsequence a i _{i} i​ , a i+1 _{i+1} i+1​ , ..., a j _{j} j​ .

输入格式

  • Line 1: n (1 ≤ n ≤ 30000).
  • Line 2: n numbers a 1, a 2, ..., a n _ n​ (1 ≤ a i ≤ 10 ^ 6 ).
  • Line 3: q (1 ≤ q ≤ 200000), the number of d-queries.
  • In the next q lines, each line contains 2 numbers i, j representing a d-query (1 ≤ i ≤ j ≤ n).

输出格式

  • For each d-query (i, j), print the number of distinct elements in the subsequence a 1, a i+1 ​ , ..., a j in a single line.

输入输出样例

输入 #1
5
1 1 2 1 3
3
1 5
2 4
3 5
输出 #1
3
2
3
思路: 裸的莫队.维护数出现的次数即可
代码:
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<iostream>
#include<cmath>
#define N 1000000
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 n,m,ta[N],a[N],ans,Ans[N];
int l=1,r=0;
using namespace std;
void add(int x)
{
ta[a[x]]++;
if(ta[a[x]]==1)ans++;
}
void del(int x)
{
ta[a[x]]--;
if(ta[a[x]]==0)ans--;
}
int main()
{
scanf("%d",&n);
int len=sqrt(n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&e[i].l,&e[i].r);
e[i].pos=(e[i].l-1)/len+1;
e[i].id=i;
}
sort(e+1,e+m+1);
for(int i=1;i<=m;i++)
{
while(l<e[i].l)del(l++);
while(r>e[i].r)del(r--);
while(l>e[i].l)add(--l);
while(r<e[i].r)add(++r);
Ans[e[i].id]=ans;
}
for(int i=1;i<=m;i++)printf("%d\n",Ans[i]);
return 0;
}
												

【luoguSP3267】--莫队,不同数字个数的更多相关文章

  1. 【BZOJ4129】Haruna’s Breakfast(树上莫队)

    [BZOJ4129]Haruna's Breakfast(树上莫队) 题面 BZOJ Description Haruna每天都会给提督做早餐! 这天她发现早饭的食材被调皮的 Shimakaze放到了 ...

  2. D. Powerful array 离线+莫队算法 给定n个数,m次查询;每次查询[l,r]的权值; 权值计算方法:区间某个数x的个数cnt,那么贡献为cnt*cnt*x; 所有贡献和即为该区间的值;

    D. Powerful array time limit per test seconds memory limit per test megabytes input standard input o ...

  3. NBUT 1457 莫队算法 离散化

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

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

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

  5. 【BZOJ-2453&2120】维护队列&数颜色 分块 + 带修莫队算法

    2453: 维护队列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 653  Solved: 283[Submit][Status][Discuss] ...

  6. BZOJ2120 数颜色(带修改莫队)

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...

  7. 【BZOJ3207】花神的嘲讽计划I 可持久化线段树/莫队

    看到题目就可以想到hash 然后很自然的联想到可持久化权值线段树 WA:base取了偶数 这道题还可以用莫队做,比线段树快一些 可持久化线段树: #include<bits/stdc++.h&g ...

  8. BZOJ3289 Mato的文件管理(莫队算法+树状数组)

    题目是区间逆序数查询. 莫队算法..左或右区间向左或右延伸时加或减这个区间小于或大于新数的数的个数,这个个数用树状数组来统计,我用线段树超时了.询问个数和数字个数都记为n,数字范围不确定所以离散化,这 ...

  9. BZOJ 2120 数颜色(带修改的莫队)

    2120: 数颜色 Time Limit: 6 Sec  Memory Limit: 259 MB Submit: 3478  Solved: 1342 [Submit][Status][Discus ...

随机推荐

  1. STM32之ADC实例(基于DMA方式)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/zouleideboke/article/details/75112224 ADC简介: ADC(An ...

  2. 复杂链表的复制——牛客offer

    题目描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的节点引用, ...

  3. MacBook使用HHKB键盘设置

    问题: macbook上使用hhkb的时候,很纠结档位4要不要开,开启4号DIP开关后,虽然会使HHKB键盘上减少一个“◇(Win键)”键,但是会在键盘左侧多出一个“FN”键.多出来的左“FN”键,不 ...

  4. aliplay获取播放时长

    <div id="player-con" class="frequency-pic"></div> <link rel=" ...

  5. JS OOP -04 JS中的公有成员,私有成员和静态成员

    JS中的公有成员,私有成员和静态成员 a.实现类的公有成员 b.实现类的私有成员 c.实现类的静态成员 a.实现类的公有成员 之前定义的任何类型成员都属于公有成员的范畴,该类的任何实例都对外公开这些属 ...

  6. Java Web 深入分析(6) Tomcat

    tomcat是什么:汤姆猫?Javaweb服务器? Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache ...

  7. java 框架-缓冲-Redis 2Jedis操作

    https://www.cnblogs.com/wlandwl/p/redis.html Redis介绍及Jedis基础操作   1.Redis简介 Redis 是一个开源(BSD许可)的,内存中的数 ...

  8. 初学java1 数据类型

    java数据类型 分为8种 整型 byte 8位 short 16位 int 32位 long 64位 字符型 char 必需为单引号'' 且只能有一个字符 浮点型 float double 布尔类型 ...

  9. mycat 报错 java.lang.OutOfMemoryError: Java heap space

    今天排查mysql的错误日志发现  wrapper.log  中有如下错误日志 INFO   | jvm 1    | 2019/10/20 12:52:31 | java.lang.OutOfMem ...

  10. [Vuex系列] - 细说state的几种用法

    state 存放的是一个对象,存放了全部的应用层级的状态,主要是存放我们日常使用的组件之间传递的变量. 我们今天重点讲解下state的几种用法,至于如何从头开始创建Vuex项目,请看我写的第一个文章. ...