洛谷日报:https://www.luogu.com.cn/blog/codesonic/mosalgorithm
知乎算法学习笔记:https://zhuanlan.zhihu.com/p/115243708
https://www.cnblogs.com/WAMonster/p/10118934.html
洛谷题单:
https://www.luogu.com.cn/training/2914
【普通莫队】
小B的询问
SP3267 莫队模板
P1494 简单的一个应用
P3709 一个应用(题意:求区间众数的出现次数)
CF617E 将区间用前缀“和”来表示
P3245 采用后缀思想。注意当 gcd(10,p)≠1gcd(10,p)≠1gcd(10,p)=1 时需要做特殊处理
小B的询问:
TLE的地方是四个while循环,有些题需要注意,比如http://sdfzoj.zhaojinxi.top/problem/916
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = 5e4 + 5;
int pos[maxn],cnt[maxn],a[maxn];
long long res,ans[maxn];
struct Node{
int l,r,k;
}q[maxn];
bool cmp(Node x, Node y){
return pos[x.l] == pos[y.l]? x.r < y.r : pos[x.l] < pos[y.l];
}
void Add(int x){int tmp = (++cnt[a[x]]); res += tmp * tmp - (tmp - 1)*(tmp - 1); }
void Sub(int x){int tmp = (--cnt[a[x]]); res -= (tmp + 1)*(tmp + 1) - tmp * tmp; }
int n,m,k;
int main(){
scanf("%d%d%d",&n,&m,&k);
int siz = sqrt(n);
for(int i = 1; i <= n; i++){
scanf("%d",&a[i]);
pos[i] = i /siz;//
}
for(int i = 0; i < m; i++){
scanf("%d%d",&q[i].l,&q[i].r);
q[i].k = i;
}
sort(q,q+m,cmp);
int l = 1, r = 0;
for(int i = 0; i < m; i++){
while(q[i].l < l) Add(--l);// add left
while(q[i].r > r) Add(++r);// add right
while(q[i].l > l) Sub(l++);// sub left
while(q[i].r < r) Sub(r--);// sub right
//记录答案
ans[q[i].k] = res;
}
for(int i = 0; i <m ; i++)
cout<<ans[i]<<endl;
}
【带修莫队】
P1903 带修莫队模板
CF940F 简单的带修莫队,注意复杂度的证明
CF1476G 比较难的一个应用,注意推导特殊性质。难点在于统计答案。考虑定义一个数的出现次数的出现次数(即 cnticnt_icnti 的出现次数),对这个数组进行统计。
【回滚莫队】
AT1219 回滚莫队模板
P6072 回滚莫队+01trie
P4137 只减不加的回滚莫队
P5386 回滚莫队结合序列分块,序列的每个块内单独维护
【树上莫队】
P3379 LCA,树上莫队的必备前置知识
SP10707 树上莫队模板
P4689 树上莫队
P4074 树上带修莫队
【综合应用】
P4477 先对问题进行简化,并考虑对于简化后的问题使用其它数据结构(如线段树)。最后加上莫队处理就可以了
SP744 莫队思想的应用,像莫队一样维护左右端点。
CF1000F 莫队+一些技巧(值域分块,栈……)可能需要卡常
P5268 莫队+差分
P3604 莫队+状态压缩
P4396 莫队+值域分块
P3674 莫队+bitset的简单技巧
P5112 莫队+字符串哈希
P4688 莫队+bitset,拆解询问
【二次离线莫队】
P4887 二次离线莫队模板(扫描线+队列)
P5398 需要用到根号分治,需要卡常
P5047 一个应用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架