![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分块&莫队
文章平均质量分 52
crazy morning
去西之西处,驾驭长风
展开
-
P4396 [AHOI2013]作业
题目题目思路看见这种多测+无修改+不强制在线的就可以莫队。然后这里询问的东西和数值有关,所以是值域分块所以这破题是莫队套分块?莫队就是大家耳熟能详的莫队,分块就是大家耳熟能详的分块……莫队是没什么好说的,就老老实实搞值域分块的时候也是老老实实搞 就是要存3个:单点个数,块个数,块数值个数另外排序询问用的分块是输入序列分块,值域分块是值域分块,不要搞混了话说这应该就我一个错code:#include<cstdio>#include<cstring>#inclu原创 2021-08-07 18:26:54 · 69 阅读 · 0 评论 -
P6466 分散层叠算法(Fractional Cascading)
题目题目思路突然良心发现决定写下简略题意:求x在k个有序序列里所有的后继多次询问,强制在线所以这题的做法显然是由裸暴力和一个预处理爆炸的算法合并得到的裸暴力不用说,是时间O(1)−O(klogn)O(1)-O(k\log n)O(1)−O(klogn),空间O(nk)O(nk)O(nk)的,时间炸了预处理爆炸的,是时间O(nk)−O(logn+k)O(nk)-O(\log n+k)O(nk)−O(logn+k),空间O(nk2)O(nk^2)O(nk2)的,空间炸了仔细思考预处理爆炸原创 2021-08-06 19:18:43 · 327 阅读 · 0 评论 -
P1903 [国家集训队]数颜色 / 维护队列
题目题目思路这里如果没有修改,就是个普通莫队。但修改就很优(恶)美(心)。我们可以加上一位时间轴。由数据范围得,块长应设为n23n^{2\over 3}n32……然后就是时间轴,左端点,右端点的移动,与普通莫队没多大差别,不会的可以看代码。code:#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<cmath>u原创 2021-06-13 17:00:44 · 65 阅读 · 0 评论 -
P5072 [Ynoi2015] 盼君勿忘
题目题目思路在太阳西斜的这个世界里,置身天上之森。等这场战争结束之后,不归之人与望眼欲穿的众人, 人人本着正义之名,长存不灭的过去、逐渐消逝的未来。我回来了,纵使日薄西山,即便看不到未来,此时此刻的光辉,盼君勿忘。————世界上最幸福的女孩显然子序列长度为len,则x的贡献为x的数量∗(2len−2len−x出现次数)x的数量*(2^{len}-2^{len-x出现次数})x的数量∗(2len−2len−x出现次数)本题就是简单分块莫队,难点有2:光速幂求2nTLE的威胁——没事原创 2021-06-07 13:51:00 · 370 阅读 · 0 评论 -
P5906【模板】回滚莫队&不删除莫队
题目题目思路不删除莫队,其实相比普通莫队,只多了一步:在需要删除的时候,选择重新开始莫队就是这样了,千万记得重开莫队要清零。code:#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<cmath>using namespace std;//When I wrote this code,God and I unters原创 2021-06-07 09:05:40 · 241 阅读 · 0 评论 -
P2261 [CQOI2007]余数求和
题目题目思路其实完成这道题只需要2个思路:高精度除法,举个栗子:11 mod 5=11-5*(11/5)(没错,是取下整)=1分块来,看看柿子:∑i=1nkmodi=n∗k−∑i−1nki\sum_{i=1}^{n} k mod i=n*k-\sum_{i-1}^{n}\frac{k}{i}∑i=1nkmodi=n∗k−∑i−1nik接下来对于k/i这个部分分块,ACcode:#include<cstring>#include<algorithm>#原创 2021-02-09 15:32:56 · 96 阅读 · 0 评论 -
P1494 [国家集训队]小Z的袜子
题目题目思路说来讽刺,这题居然是同学叫我做的水题哪个水题是莫队啊莫队,莫涛队长发明的一种优雅的暴力,尊称莫队我有一个绝妙的暴力,可惜时限太小A不掉莫队,是一种支持询问不支持修改的离线算法。大概就是以某种方式排序所要查询的区间,并通过上一个区间的移动得到这个区间解的方法。听起来很简单,但难点在于3个:这个所谓的某种方式是分块或更难算法移动的过程可能很难推导区间可能需要抽象划分这里的3问题不存在,2问题可以解决。我们只需要统计区间(长度len)平方和(sum)即可,答案公式为:原创 2021-06-03 21:05:31 · 78 阅读 · 0 评论