【bzoj3585/bzoj3339】mex/Rmq Problem 莫队算法+分块
原文地址:http://www.cnblogs.com/GXZlegend/p/6805283.html
题目描述
有一个长度为n的数组{a1,a2,...,an}。m次询问,每次询问一个区间内最小没有出现过的自然数。
输入
第一行n,m。
第二行为n个数。
从第三行开始,每行一个询问l,r。
输出
一行一个数,表示每个询问的答案。
样例输入
5 5
2 1 0 2 1
3 3
2 3
2 4
1 2
3 5
样例输出
1
2
3
0
3
题解
莫队算法+分块,双倍经验题
首先必有如果某数大于等于n,那么它对答案没有任何贡献,所以可以把大于n的数看成n
然后类似于bzoj3809,将权值分块,查询时先找到第一个不满的块,再在块中查找。
注意:自然数:自然数集是全体非负整数组成的集合(包括0),所以分块要从0开始。
#include <cstdio>
#include <cmath>
#include <algorithm>
#define N 200010
using namespace std;
struct data
{
int l , r , bl , id;
}a[N];
int w[N] , cnt[N] , num[510] , ans[N];
bool cmp(data a , data b)
{
return a.bl == b.bl ? a.r < b.r : a.bl < b.bl;
}
int main()
{
int n , m , si , i , j , lp = 1 , rp = 0;
scanf("%d%d" , &n , &m) , si = (int)sqrt(n);
for(i = 1 ; i <= n ; i ++ )
{
scanf("%d" , &w[i]);
if(w[i] > n) w[i] = n;
}
for(i = 1 ; i <= m ; i ++ ) scanf("%d%d" , &a[i].l , &a[i].r) , a[i].bl = (a[i].l - 1) / si , a[i].id = i;
sort(a + 1 , a + m + 1 , cmp);
n ++ , si = (int)sqrt(n);
for(i = 1 ; i <= m ; i ++ )
{
while(lp > a[i].l) lp -- , num[w[lp] / si] += (!cnt[w[lp]]) , cnt[w[lp]] ++ ;
while(rp < a[i].r) rp ++ , num[w[rp] / si] += (!cnt[w[rp]]) , cnt[w[rp]] ++ ;
while(lp < a[i].l) cnt[w[lp]] -- , num[w[lp] / si] -= (!cnt[w[lp]]) , lp ++ ;
while(rp > a[i].r) cnt[w[rp]] -- , num[w[rp] / si] -= (!cnt[w[rp]]) , rp -- ;
for(j = 0 ; j <= (n - 1) / si ; j ++ ) if(num[j] < si) break;
j *= si;
while(cnt[j]) j ++ ;
ans[a[i].id] = j;
}
for(i = 1 ; i <= m ; i ++ ) printf("%d\n" , ans[i]);
return 0;
}
【bzoj3585/bzoj3339】mex/Rmq Problem 莫队算法+分块的更多相关文章
- BZOJ 3339: Rmq Problem 莫队算法
3339: Rmq Problem 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3339 Description n个数,m次询问l,r ...
- 【题解】P4137 Rmq Problem(莫队)
[题解]P4137 Rmq Problem(莫队) 其实这道题根本就不用离散化! 因为显然有\(mex\)值是\(\le 2\times 10^5\)的,所以对于大于\(2\times 10^5\)的 ...
- 【bzoj3809/bzoj3236】Gty的二逼妹子序列/[Ahoi2013]作业 莫队算法+分块
原文地址:http://www.cnblogs.com/GXZlegend/p/6805252.html bzoj3809 题目描述 Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了 ...
- 【BZOJ3585/3339】mex 莫队算法+分块
[BZOJ3585]mex Description 有一个长度为n的数组{a1,a2,...,an}.m次询问,每次询问一个区间内最小没有出现过的自然数. Input 第一行n,m. 第二行为n个数. ...
- 【BZOJ】2038: [2009国家集训队]小Z的袜子(hose)(组合计数+概率+莫队算法+分块)
http://www.lydsy.com/JudgeOnline/problem.php?id=2038 学了下莫队,挺神的orzzzz 首先推公式的话很简单吧... 看的题解是从http://for ...
- XOR and Favorite Number(莫队算法+分块)
E. XOR and Favorite Number time limit per test 4 seconds memory limit per test 256 megabytes input s ...
- BZOJ 3809 Gty的二逼妹子序列 莫队算法+分块
Description Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题. 对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b]的妹子的美丽度的种类数. 为了方便,我们 ...
- 【BZOJ3809/3236】Gty的二逼妹子序列 [Ahoi2013]作业 莫队算法+分块
[BZOJ3809]Gty的二逼妹子序列 Description Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题. 对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b ...
- WHU-1551-Pairs(莫队算法+分块实现)
Description Give you a sequence consisted of n numbers. You are required to answer how many pairs of ...
随机推荐
- 前端JavaScript之DOM节点操作
1.HTML DOM是啥 Document Object Model:定义了访问和操作HTML文档的标准方法,把HTML文档呈现为带有元素,属性和文本的树状结构 2.解析过程 HTML加载完毕,渲染引 ...
- Webpack4 学习笔记三 ES6+语法降级为ES5
前言 此内容是个人学习笔记,以便日后翻阅.非教程,如有错误还请指出 Webpack 将es6.es7语法降级为es5 需要通过 babel JavaScript编译器. 安装: npm i babel ...
- MappingException:class com.zsn.crm.Model.user not found whie looking for property user id
之前好好地运行 什么东西都没动过 再次运行突然报异常*****MappingException:class com.zsn.crm.Model.user not found whie looking ...
- exa命令详解
exa 是 ls 文件列表命令现代化替代品. 官网:https://the.exa.website/ GitHub:https://github.com/ogham/exa 后续整理中……
- 10.2 DOM 操作技术【JavaScript高级程序设计第三版】
很多时候,DOM 操作都比较简明,因此用JavaScript 生成那些通常原本是用HTML 代码生成的内容并不麻烦.不过,也有一些时候,操作DOM 并不像表面上看起来那么简单.由于浏览器中充斥着隐藏的 ...
- [KMP][BZOJ1355][Baltic2009]Radio Transmission
题面 Description 给你一个字符串,它是由某个字符串不断自我连接形成的. 但是这个字符串是不确定的,现在只想知道它的最短长度是多少. Input 第一行给出字符串的长度,\(1 < L ...
- STM32遇到的问题
1.GPIO输出实验的时候,原来的库和现成的源代码有出入?导致实验现象不同,delay_ms,主要集中在这个函数上面 2.按键输入的时候,LED和KEY 初始化全部放在主函数,有按下按键以后,灯闪烁不 ...
- [bzoj3071]N皇后
哈哈哈水题~ 但是不能一眼看出来的..我想了一个小时?! 题面 Description “国际象棋中,一方的皇后数不能超过5个” 一个N*N的棋盘,任意摆放皇后,最坏情况下最少需要多少个皇后才能保证所 ...
- CSS3---混合模式
概念 CSS3混合模式( CSS Blend Modes )是CSS3新增的一个魔法特性,可以允许多个背景或多个元素进行混合,类似于Photoshop的图层混合模式 CSS3混合模式属性一览 ba ...
- 剑指Offer - 九度1519 - 合并两个排序的链表
剑指Offer - 九度1519 - 合并两个排序的链表2013-11-30 22:04 题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则.(hi ...