![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
莫队
EMber _
人但有追求,世界亦会让路。
展开
-
莫队算法学习小记 bzoj3781
所谓莫队,就是。。。好吧我说不出来具体释义。。 这个算法常用于序列的处理中,对于序列处理有很大的作用。 能够使用莫队算法的题目都具有一个特点: 对于每一个询问的区间【l,r】都能O(1)推导到l-1,r.l,r+1.l+1,r.l,r-1. 使用莫队时要先对所有的询问分块,每一个块的长度为sqrt(n),然后按块的顺序排序,询问的r作为第二关键字(具体看题目,一般来说是以r为第二关键字)。原创 2016-09-12 21:16:26 · 270 阅读 · 0 评论 -
JZOJ4663 Seq 莫队5题2/5
Description 1≤n,m≤50000 题解: 最简单的想法就是用莫队处理,然后加上线段树维护区间最大子段和,可是这样的时间复杂度是O(Nsqrt(n)logn),会达到10^8,这就非常不和谐了,那么我们怎么办呢? 对于维护区间最大子段和,我们可以考虑假如所有的操作都是插入操作,那么答案一定是不下降的,所以此时直接维护莫队的两个端点lr就可以了,问题是还有删除操原创 2016-09-13 17:24:37 · 474 阅读 · 0 评论 -
bzoj2038莫队模板
题解rt。#include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #define fo(i,a,b) for(int i=a;i<=b;i++) #define fd(i,a,b) for(int i=a;i>=b;i--) using namespace std; const int N=1e5+5; int n原创 2017-03-23 16:08:08 · 240 阅读 · 0 评论 -
bzoj3781 小B的询问 莫队
不是很难的莫队,打来熟悉一下,很久没打了。#include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<iostream> #include<queue> #define fo(i,a,b) for(int i=a;i<=b;i++) #define fd(i,a,b) for(int i=a;i>=b原创 2017-04-18 16:13:32 · 207 阅读 · 0 评论 -
bzoj3809Gty的二逼妹子序列 莫队+分块
这题目是个好题,,本来以为随便找一道切一下熟悉一下就好的,没想到随手抽了一道好题出来。。 这题实际上是两个莫队,先对原序列的下标做莫队,然后对于权值数组做莫队,但是我们发现权值数组和序列数组的分块是相同的,所以两个的pos数组可以公用,就不用重新更新了。#include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #i原创 2017-04-18 20:14:14 · 243 阅读 · 0 评论 -
bzoj4810 [Ynoi2017]由乃的玉米田 莫队+bitset
Description由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美。这排玉米一共有N株,它们的高度参差不齐。 由乃认为玉米田不美,所以她决定出个数据结构题这个题是这样的: 给你一个序列a,长度为n,有m次操作,每次询问一个区间是否可以选出两个数它们的差为x,或者询问一个区间是 否可以选出两个数它们的和为x,或者询问一个区间是否可以选出两个数它们的乘积为x ,这三个操作分别为操作1原创 2017-04-18 21:03:12 · 590 阅读 · 0 评论 -
bzoj2453&2120 维护队列 可修改莫队算法/树套树
题意:给你一个序列,要求区间内不相同数字个数,单点修改。 第一眼感觉就是裸的树套树啊,然后看了看题解woc怎么都是莫队啊。 算了反正就算复习莫队吧= =我也好久没打了。觉得hzwer的那个方法不算普遍,candy?的方法应该是更加模板化的吧,10^6直接记录每个颜色数量以后更新,可修改和不可修改其实没太大差别,就是要多记录一个时间还有每一次修改之前的值,这也就意味着你要把修改和询问区分开来(好像原创 2017-09-20 18:29:07 · 243 阅读 · 0 评论