
莫队
文章平均质量分 72
Hexrt
南昌航空大学软件学院,ACMerRetired。
求知若渴,虚心若愚。
傲慢与偏见才是进步的最大阻碍。
展开
-
SP10707 COT2 - Count on a tree II【树上莫队】
SP10707 COT2 - Count on a tree II【树上莫队】给定一颗无根树,求树上两点路径上的节点有多少不同的数字可以离线前提,能够通过某种操作,将树上路径问题,转化成区间问题这样,类似于求区间不同数,区间众数,区间mex等操作就能通过莫队离线来做了原创 2021-08-29 17:44:46 · 150 阅读 · 0 评论 -
CF-940-F. Machine Learning【带修莫队】
传送门维护区间数字出现次数的mexmexmex要求修改,支持离线分析支持离线,考虑莫队区间数字出现次数的mexmexmex经典带修莫队直接维护数字出现的次数找mexmexmex的时候,可以直接暴力找证明:当最差的时候,每种次数都出现了一遍,且这个次数最高也就是,1+2+3+4+...x=N1+2+3+4+... x = N1+2+3+4+...x=N此时x最高到 N\sqrt{N}N找mexmexmex最差也就是N\sqrt{N}N,乘上莫队复杂度,可以过如果信不过的话,可以使原创 2021-08-21 17:21:22 · 187 阅读 · 0 评论 -
P1903 [国家集训队]数颜色 / 维护队列【带修莫队】
维护区间不同的数,带修改,离线传送门分析带修莫队,在原来莫队的基础上增加一维,时间维度原来的简单莫队就是在区间 l∼rl \sim rl∼r,调整左右端点位置,现在还要调整时间的位置不修改的区间不同数,另一题 SP3267 DQUERY - D-query【莫队】或【主席树】 有详细解释建立在上面的基础上,我们增加一维对每个询问增加一个维度ttt,表示询问前的最后一次修改的时间我们在回答询问的时候一定要将前ttt次修改都执行完,才能得到正确的答案参考代码 int l = 1, r = 0原创 2021-08-21 17:05:54 · 117 阅读 · 0 评论 -
P3709 大爷的字符串题【普通莫队】
传送门给定一个长度为NNN的数组,求区间l∼rl \sim rl∼r任意排序后,最小严格递增序列的个数(=区间众数)分析就是求l∼rl \sim rl∼r 区间的众数,离线,不修改考虑莫队增加一个数,计数器删除原来次数的出现次数,更新现在的次数,更新答案删除一个属,计数器更新原来的出现次数,跟新现在的次数,再跟新答案void add(int x) { --same[cnt[arr[x]]]; ++same[++cnt[arr[x]]]; mo = max(mo, cnt[arr[x]])原创 2021-08-21 16:57:17 · 88 阅读 · 0 评论 -
CF-617-E. XOR and Favorite Number【普通莫队】
给定一个长度为NNN的数组,一个整数KKK,求区间l∼rl \sim rl∼r中有多少pair{i,j},i<=jpair\{i,j\},i<=jpair{i,j},i<=j,满足ai⊕ai+1⊕...⊕aj=Ka_i \oplus a_{i+1} \oplus ... \oplus a_j=Kai⊕ai+1⊕...⊕aj=K传送门分析先考虑暴力求 ai⊕ai+1⊕...⊕aja_i \oplus a_{i+1} \oplus ... \oplus a_jai⊕ai+1⊕原创 2021-08-21 16:31:04 · 92 阅读 · 0 评论 -
SP3267 DQUERY - D-query【莫队】或【主席树】
传送门给定一个长度为NNN的数组,求区间 l∼rl \sim rl∼r 不同的数字分析对于此类后面出现会影响(覆盖)前面出现效果的问题需要往当前位置左边最后一次出现位置思考比如,mexmexmex 也是如此这道题求 区间mex 也是同样处理这种位置会覆盖前一个位置影响的,都考虑左边最近一个的位置静态区间在线查询 MEXMEXMEX主席树,维护最近值域出现的位置在 rrr 树上二分找值域的出现位置小于 lll 的最小值证明:假如一个数xxx 在区间 l∼rl \sim rl∼r 出现原创 2021-08-21 16:01:17 · 107 阅读 · 0 评论 -
P4137 Rmq Problem / mex【权值线段树】【莫队】
传送门给定长度为NNN的数组,求l∼rl \sim rl∼r 的mexmexmex(从0开始第一个没有在区间出现的数)分析这种位置会覆盖前一个位置影响的,都考虑左边最近一个的位置静态区间在线查询 MEXMEXMEX主席树,维护最近值域出现的位置在 rrr 树上二分找值域的出现位置小于 lll 的最小值证明:假如一个数xxx 在区间 l∼rl \sim rl∼r 出现过,那么它在rrr数上对应值域的值,一定是大于等于lll的推得,一个数在l∼rl \sim rl∼r区间出现过的条件是,在rr原创 2021-08-21 16:00:51 · 239 阅读 · 0 评论