• 2024-07-02CF576C Points on Plane
    牛逼套路看inf眼都不会,看眼题解就会了(bushi题目让我们求一堆点按某种顺序排列后相邻点曼哈顿距离总和小于等于\(2.5\times10^9\)然后很牛的东西:把坐标\((x,y)\)当作区间\((l,r)\),那欲求式就等于每一个区间的\((l_1,r_1)\)移到另一个相邻区间的\((l2,r2)\)的步数的总和了,于是很
  • 2024-06-20从值域分块+莫队到二次离线莫队
    值域分块Q给定一个序列,实现单点修改\(O(1)\),以及区间查询\(O(\sqrtn)\)A考虑设\(block_i\)表示块\(i\)的和,那么修改便是\(O(1)\)全局查询时,整块调用\(block\),散块暴力即可\(O(\sqrtn)\)还有一些常见的例子,比如配合莫队代替主席树(区间mex)莫队二次离线普通莫队
  • 2024-06-18算法课程笔记——普通莫队
    算法课程笔记——普通莫队
  • 2024-06-11分块和莫队
    一、分块概念与作用1.概念:将数列等分为若干个不相交的区间,每一个区间称为一个块。2.作用:优化算法,降低复杂度。分块入门1题面:给出一个长为n的数列,以及n个操作,操作涉及区间加法,单点查询。分析:将n个元素等分成若干块,比如\(\{1,4,8,2,9,6,3,7,5\}\),等分成3块,则第一块包含的数
  • 2024-05-21莫队
    膜拜“莫涛”巨佬思路如果说给你一个数组,有\(q\)组询问,询问一个区间的区间和,那么有最原始的做法。维护一个左端点和一个右端点,每次一位一位移动断点,那么时间复杂度是\(n\timesq\),那么如果我们将查询存起来,按一种我们想要的顺序去做呢?我们就可以排序,排序规则就是:B=sqrt(n
  • 2024-05-10莫队(板子)
    莫队参考博客玄学暴力区间操作算法PPT解释的很清楚啦~,导致我没什么可写的\(qwq\)把所有询问离线下来后排序(左端点按块,右端点升序),然后从一个小区间通过左右端点的移动扩大区间,更新答案。复杂度主要在区间扩展,也就是左右指针的移动,对于莫队所有的优化几乎都是调整分块或排
  • 2024-05-09莫队算法(基础莫队)小结(也做markdown测试)
    莫队基础莫队本质是通过排序优化了普通尺取法的时间复杂度。考虑如果某一列询问的右端点是递增的,那么我们更新答案的时候,右指针只会从左往右移动,那么i指针的移动次数是$O(n)$的。当然,我们不可能让左右端点都单调来做到总体$O(n)$。考虑对左端点进行分块。莫队排序:左端点按
  • 2024-04-29莫队小计
    莫队考虑一个经典的问题。对一个数列进行\(m\)次区间求和。暴力需要\(O(nm)\),但是莫队可以优化到\(O(n\sqrtm)\)。思想具有启发式思维。假如我们知道\([l,r]\)的和为\(k\)。在此基础上\([l-1,r],[l,r+1]\)都可以很快得到。莫队是对上一个问题解决这个问题。要给对问题
  • 2024-04-23回滚莫队
    简介:远看是莫队(\(r\)),近看是暴力(\(l\),以及左右端点在同一块)。还记得普通莫队里面怎么说的吗?注意两个操作有时候会西掉一个,有时候还要在数据结构上操作,但这不在这篇文章的范围内。所以,这篇文章就会讲述如何应对“两个操作西掉一个”的情况。删除西掉了(更加常见)和正常莫队的排
  • 2024-04-23正常莫队
    简介:原汁原味。区间不同数字数量\(N\le10^5,Q\le10^5,A_i\le10^9\)。我们当然可以暴力,时间复杂度\(O(QN)\)。Improvment1我们离散化,然后区间\([l,r]\)可以快速扩展到\([l-1,r],[l+1,r],[l,r-1],[l,r+1]\)。维护扩展中新来的信息。具体怎么从某
  • 2024-04-23莫队-目录
    这个算法有多个变体。如果你只需要某些变体,点开这些变体的页面即可。这个算法有多个变体。如果你只需要某些变体,点开这些变体的页面即可。这个算法有多个变体。如果你只需要某些变体,点开这些变体的页面即可。普通莫队
  • 2024-04-23分块莫队——维护队列
    题目描述样例输入2312Q12R12Q12样例输出21题目分析首先它是一个离线莫队(在线超时QAQ)离线首先存下它所有的询问和修改,分别存,询问要存下是第几次,以便后续输出,还要存下时间是第几个命令,比较询问和修改的时间,相应的变换颜色,最后整体输出#include<bits/stdc++.h>
  • 2024-04-22P4168 [Violet] 蒲公英 (莫队的强制在线)
    前言当个乐子看就行所用时间不如分块正解快虽然在线莫队实质也是分块[Violet]蒲公英题目背景亲爱的哥哥:你在那个城市里面过得好吗?我在家里面最近很开心呢。昨天晚上奶奶给我讲了那个叫「绝望」的大坏蛋的故事的说!它把人们的房子和田地搞坏,还有好多小朋友也被它杀掉了。我
  • 2024-04-22[BZOJ4358]permu树上莫队
    先放代码晚上补(争取)#include<bits/stdc++.h>#definefo(x,y,z)for(int(x)=(y);(x)<=(z);(x)++)#definefu(x,y,z)for(int(x)=(y);(x)>=(z);(x)--)typedeflonglongll;usingnamespacestd;inlineintqr(){ charch=getchar();intx=0,f=1; for(;ch<&
  • 2024-04-19莫队
    莫队介绍利用分块进行处理的离线算法;时间复杂度普遍为\(O(n\sqrt{n})\);但会被卡实现思路对答案的查询在已知区间的情况下暴力寻找的目标区间的贡献;对于已知当前\([L,R]\)区间,一共有\(4\)种情况:加上当前区间左边一格的贡献:Add(--L);先将当前的下标
  • 2024-04-18莫队
    简介莫队是一种离线求区间信息的算法,可以做到\(O((N+Q)\cdot\sqrt{N})\)。莫队中使用了分块的思想。首先考虑一个问题:给定一个长度为\(N\)序列\(A\)和\(Q\)次询问,每次询问查询区间\([X_i,Y_i]\)的和。(请先忘掉前缀和、线段树、树状数组什么的)比如以下数据:54322
  • 2024-04-18莫队
    莫队是一种对于询问做转移的算法。对于可以离线,运算可逆的题目。如果按题目给的顺序操作,可以被以下数据hack11nn11nn11nn11nn...时间复杂度\(O(n^2)\)。我们可以通过某一些排序来降低时间复杂度。首先,把这个序列分成\(\sqrt{n}\)块,每一块按右
  • 2024-04-15C116 莫队二次离线 P4887 莫队二次离线
    视频链接:     LuoguP4887【模板】莫队二次离线(第十四分块(前体))//莫队二次离线O(n*sqrt(n)+n*C(k,14))#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<vector>usingnamespacestd;constintN=100005;
  • 2024-04-15莫队
    查询区间每个数出现的个数,离线算法,O(nsqrt(n))一、普通莫队题目链接https://www.luogu.com.cn/problem/P2709题目大意题目代码#include<iostream>#include<algorithm>#include<cmath>#definelllonglongconstintN=5e4+5;usingnamespacestd;intn,m,k,block
  • 2024-04-12莫队学习笔记
    目录普通莫队初遇——从暴力谈起困境——乱跑的指针优化——顺路而为之带修莫队参考资料普通莫队初遇——从暴力谈起我们通过一道例题来讨论普通莫队。题目链接。观察数据范围,一个很直接的想法是:开一个数组\(cnt\),\(cnt_i\)表示在询问的区间内数字\(i\)出现的次数。对于
  • 2024-04-10#莫队二次离线,根号分治#洛谷 5398 [Ynoi2018] GOSICK
    题目\(m\)组询问求\(\sum_{l\leqi,j\leqr}[a_i\bmoda_j==0],n,m,a_i\leq5\times10^5\)分析设\(f(l,r,x)\)表示\(i或j\in[1,x],i或j\in[l,r]\)时的答案,\(g_x\)表示\([1,x]\)的答案,根号的做法可以通过三秒由于涉及区间内的求值,需要在莫队的基础上二次离线,那
  • 2024-04-08C114 回滚莫队 歴史の研究
    视频链接:C114回滚莫队歴史の研究_哔哩哔哩_bilibili   LuoguAT_joisc2014_c歴史の研究//回滚莫队O(n^(3/2))#include<iostream>#include<cstring>#include<algorithm>#include<cmath>usingnamespacestd;#defineLLlonglongconstintN=1000005;
  • 2024-04-08分块与莫队
    不沾树的博客变短了好多。分块例题这道题显然可以使用线段树乱搞过去,不过为了给主角面子我们假设我们不会做。对于一些难以使用数据结构维护答案的序列问题,我们考虑暴力。但是暴力太慢了,于是人们提出了分块。分块,就是把序列分成许多的小段,通过一些神秘的处理实现优化暴力。
  • 2024-04-05C112 莫队算法 P1494 [国家集训队] 小 Z 的袜子
    视频链接:  LuoguP1494[国家集训队]小Z的袜子//普通莫队O(n*sqrt(n))#include<iostream>#include<cstring>#include<algorithm>#include<cmath>usingnamespacestd;constintN=50005;intn,m,B,a[N];intsum,cnt[N],ans1[N],ans2[N];str
  • 2024-04-04C111【模板】莫队算法 P2709 小B的询问
    视频链接:C111【模板】莫队算法P2709小B的询问_哔哩哔哩_bilibili   LuoguP2709小B的询问//普通莫队O(n*sqrt(n))#include<iostream>#include<cstring>#include<algorithm>#include<cmath>usingnamespacestd;constintN=50005;intn,m,k,B,a[N];