![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分块、整除分块
lemondinosaur
转圈圈 不停转圈圈 然后摔倒
展开
-
#分块#洛谷 4135 作诗
题目分析首先此题好像用不了线段树什么的,只好考虑分块但是分块这种题目其实看注释会更好啊,时间复杂度O(nn)O(n\sqrt n)O(nn)代码#include <cstdio>#include <cctype>#include <cmath>#define rr registerusing namespace std;const in...原创 2019-10-29 21:18:57 · 131 阅读 · 0 评论 -
#广搜,分块#jzoj 3974 CH #46A 磁力块
题目主人公一开始在一个位置用磁铁吸引其它磁铁,当磁铁的质量≤≤\leq磁力就会吸到主人公手里,不在主人公手里的磁铁不会互相吸引,主人公可以更换磁铁,但是只能原地不动,问主人公最多能吸到多少块磁铁分析这道题可以用广搜做,必然的暴力,但是问题是直接暴力会超时,怎么办?分块优化,用分块得到一个个区间,当然区间之间的排序用距离排序,区间内的排序用重量排序,然后,就没有然后了...原创 2018-08-23 09:46:26 · 215 阅读 · 0 评论 -
#莫队,分块#bzoj 3781 洛谷 2709 小B的询问
题目一共有M个询问,每个询问给定一个区间[L..R][L..R][L..R],求Σ(c(i)2)Σ(c(i)2)\Sigma(c(i)^2)的值,其中c(i)c(i)c(i)表示数字iii在[L..R][L..R][L..R]中的重复次数。分析然而,这道题看起来是暴力,实际上,还是暴力,只是用一种特殊的方式暴力,就是莫队,莫队是用一种O(1)O(1)O(1)的方式移动一个区间,...原创 2018-08-23 08:57:15 · 128 阅读 · 0 评论 -
#树状数组,线段树,分块#poj 3468 A Simple Problem with Integers
题目需要满足两种操作,区间修改和区间查询分析(树状数组)设tree[i]=a[i]−a[i−1]tree[i]=a[i]−a[i−1]tree[i]=a[i]-a[i-1](差分),那么容易得到: tree[1]+tree[2]+…+tree[i]=a[i]tree[1]+tree[2]+…+tree[i]=a[i]tree[1]+tree[2]+…+tree[i]=a[i]...原创 2018-08-21 12:27:40 · 154 阅读 · 0 评论 -
#分块#洛谷 3396 哈希冲突
题目分析那么首先这道题可以用预处理,但是依然是O(n2)O(n^2)O(n2),所以我们选择折中的分块,对于在范围内的修改的时候块内修改,输出O(1)O(1)O(1),在超过的时候用暴力统计,时间复杂度O(nn)O(n\sqrt n)O(nn)其中暴力询问和单点修改O(n)O(\sqrt n)O(n),但是这道题可以卡块的长度,所以自己算时间复杂度去吧代码#include <...原创 2019-03-27 17:55:51 · 150 阅读 · 0 评论 -
#莫队,分块#洛谷 3604 美好的每一天
题目给定一串字符串,询问多个区间,问有多少个子区间的字母经过移位后可以变成一个回文串分析代码#include <cstdio>#include <cctype>#include <queue>#include <algorithm>#include <cmath>#define rr registerusing n...原创 2019-04-27 07:44:13 · 131 阅读 · 0 评论 -
#整除分块#洛谷 2260 模积和 洛谷 2834 能力测验
题目求∑i=1n∑j=1m(n mod i)×(m mod j),i≠j\sum_{i=1}^{n} \sum_{j=1}^{m} (n \bmod i) \times (m \bmod j), i \neq j∑i=1n∑j=1m(nmodi)×(...原创 2019-04-27 08:03:43 · 184 阅读 · 0 评论 -
#莫队,分块#洛谷 4137 JZOJ 3547 mex
题目有一个长度为nnn的数组[a1,a2,...,an][a1,a2,...,an][a1,a2,...,an]。mmm次询问,每次询问一个区间内最小没有出现过的自然数。分析其实这道题出的不算很好,因为即使a≤109a\leq 10^9a≤109,也只是纸老虎,因为一共才不超过2×1052\times 10^52×105个数,嗯,所以其实并没有什么用,只要把超过nnn的数都变成n+1n+1...原创 2019-04-28 16:38:21 · 164 阅读 · 0 评论 -
#分块,二分#洛谷 2801 教主的魔法
题目支持两个操作:在区间[l∼r][l\sim r][l∼r]增加xxx在区间[l∼r][l\sim r][l∼r]查询≥x\geq x≥x的个数分析第二个操作太困难了,所以说尝试分块,在块内排序,二分答案,块外暴力,对于块内的区间加,可以加上懒标记,二分时减掉这个数代码#include <cstdio>#include <cctype>#incl...原创 2019-05-17 19:10:33 · 121 阅读 · 0 评论 -
#树状数组,莫比乌斯反演,整除分块#bzoj 3529 JZOJ 3623 洛谷 3312 数表
题目求∑i=1n∑j=1mσgcd(i,j)[σgcd(i,j)≤w]\sum_{i=1}^{n}\sum_{j=1}^m\sigma_{gcd(i,j)}[\sigma_{gcd(i,j)}\leq w]i=1∑nj=1∑mσgcd(i,j)[σgcd(i,j)≤w]多组数据分析先把后面条件扔掉,默认n≤mn\leq mn≤m∑i=1n∑j=1mσgcd(i,j)=∑d=1n...原创 2019-06-06 07:49:58 · 161 阅读 · 0 评论 -
莫比乌斯反演专题
算法专题莫比乌斯函数整除分块Example分析代码莫比乌斯函数的性质莫比乌斯反演积性函数后续莫比乌斯函数首先把nnn按照唯一分解定理变成∏i=1kpici\large\prod_{i=1}^{k}p_i^{c_i}∏i=1kpici那么若∀x∈p\forall x\in p∀x∈pμ(n)={1[n==1]0[n mod&VeryThinS...原创 2019-06-12 18:13:02 · 413 阅读 · 0 评论 -
#莫比乌斯反演,乘法逆元,快速幂,整除分块#JZOJ 100006 洛谷 3704 bzoj 4816 数字表格
题目求∏i=1n∏j=1mFgcd(i,j)\prod_{i=1}^n\prod_{j=1}^mF_{gcd(i,j)}i=1∏nj=1∏mFgcd(i,j),F是斐波那契数列分析使n≤mn\leq mn≤m=∏d=1nFd∑i=1n∑j=1m[gcd(i,j)==d]\large=\prod_{d=1}^n{F_d}^{\sum_{i=1}^n\sum_{j=1}^m[gcd(i...原创 2019-06-06 16:31:54 · 179 阅读 · 0 评论 -
2019.07.12【NOIP提高组】模拟 A 组
解题报告JZOJ 3360 BZOJ 3757 苹果树分析代码JZOJ 3397 洛谷 4556 雨天的尾巴分析代码JZOJ 3360 BZOJ 3757 苹果树题目分析树上莫队解决此题代码#include <cstdio>#include <cctype>#include <cmath>#include <algorithm>...原创 2019-07-13 15:58:25 · 190 阅读 · 0 评论 -
#莫队,分块#洛谷 5268 bzoj 5016 一个简单的询问
题目分析要把这个询问拆成g(r1)∗g(r2)−g(l1−1)∗g(r2)−g(r1)∗g(l2−1)+g(l1−1)∗g(l2−1)g(r1)*g(r2)-g(l1-1)*g(r2)-g(r1)*g(l2-1)+g(l1-1)*g(l2-1)g(r1)∗g(r2)−g(l1−1)∗g(r2)−g(r1)∗g(l2−1)+g(l1−1)∗g(l2−1)那么对于g(l)∗g(r)g(l)*g...原创 2019-08-06 15:40:26 · 147 阅读 · 0 评论 -
#整除分块#洛谷 2261 余数之和
题目给定nnn和kkk,求(kmod1)+(kmod2)+…+(kmodn−1)+(kmodn)(kmod1)+(kmod2)+…+(kmodn−1)+(kmodn)(k\mod1)+(k\mod2)+…+(k\mod n-1)+(k\mod n)分析因为(kmodn)=k−⌊k÷n⌋(kmodn)=k−⌊k÷n⌋(k\mod n)=k-\lfloor k\div n\rflo...原创 2018-08-24 21:19:18 · 315 阅读 · 0 评论 -
#莫队,分块#codevs 6555 洛谷 1494 jzoj 1902 小Z的袜子
题目有多大的概率抽到两只颜色相同的袜子分析首先答案=相同袜子的数量/Cn−1nCnn−1C_n^{n-1} 但是纯暴力是会超时的,怎么办呢,用莫队+分块愉快地解决问题,注意特判和最简代码#include <cstdio>#include <cmath>#include <algorithm>struct rec{int l...原创 2018-08-25 10:39:43 · 129 阅读 · 0 评论 -
#分块#洛谷 4168 CH 4401 蒲公英
题目求区间众数分析线段树和树状数组很难做的,分块可以做,离散后预处理,大段维护,小段朴素,就做完了代码#include <cstdio>#include <cmath>#include <algorithm>#define cct(i,a,b) for (register int i=a;i<=b;i++)int n,m...原创 2018-08-25 12:12:23 · 212 阅读 · 0 评论 -
#欧拉函数,整除分块#洛谷 1447 JZOJ 2225 能量采集
题目∑i=1n∑j=1m2×gcd(i,j)−1\sum_{i=1}^n\sum_{j=1}^m2\times gcd(i,j)-1i=1∑nj=1∑m2×gcd(i,j)−1分析原式=2×(∑i=1n∑j=1mgcd(i,j))−nm2\times(\sum_{i=1}^n\sum_{j=1}^mgcd(i,j))-nm2×(i=1∑nj=1∑mgcd(i,j))−nm重点就是...原创 2019-02-14 10:49:06 · 206 阅读 · 0 评论 -
#整除分块#洛谷 2424 约数和
题目设f(x)f(x)f(x)表示为x的约数和,求f(x)+……+f(y)f(x)+……+f(y)f(x)+……+f(y)分析首先要思考如何表示答案.f(x)f(x)f(x)表示为∑d|xd∑d|xd\sum_{d|x}d那么答案为∑yi=x∑d|xd∑i=xy∑d|xd\sum^y_{i=x}\sum_{d|x}d但是时间复杂度是O(∑yi=xi√)O...原创 2018-06-20 20:24:16 · 169 阅读 · 0 评论 -
#莫比乌斯反演,整除分块#bzoj 2154 bzoj 2693 jzoj 1938 洛谷 1829 Crash的数字表格 or JZPTAB
题目求∑i=1n∑j=1mlcm(i,j)\sum_{i=1}^n\sum_{j=1}^mlcm(i,j)i=1∑nj=1∑mlcm(i,j)分析原式=∑i=1n∑j=1mijgcd(i,j)\sum_{i=1}^n\sum_{j=1}^m\frac{ij}{gcd(i,j)}i=1∑nj=1∑mgcd(i,j)ij那么原式=∑d=1min(n,m)d×∑i=1⌊nd⌋∑j=1...原创 2018-12-28 19:54:25 · 167 阅读 · 0 评论 -
#莫比乌斯反演,整除分块,线性筛#bzoj 3994 洛谷 3327 [SDOI2015]约数个数和
题目设d(x)d(x)d(x)为xxx的约数个数,给定n,mn,mn,m,求 ∑i=1n∑j=1md(ij)\sum^n_{i=1}\sum^m_{j=1}d(ij)i=1∑nj=1∑md(ij)分析又到了推式子的过程了ans=∑i=1n∑j=1m∑x∣i∑y∣j[gcd(x,y)=1]ans=\sum^n_{i=1}\sum^m_{j=1}\sum_{x|i}\sum_{y|j}[...原创 2018-11-28 18:15:51 · 176 阅读 · 0 评论 -
#莫比乌斯反演,整除分块,线性筛#洛谷 2522 bzoj 2301 problem b
题目求a≤x≤b,c≤y≤da\leq x\leq b,c\leq y\leq da≤x≤b,c≤y≤d中gcd(x,y)=kgcd(x,y)=kgcd(x,y)=k的个数分析其实只要做了洛谷 3455就会理解很多蒟蒻的题解然后这道题可以用前缀和表达出来TotalAns=Ans(b,d)−Ans(a−1,d)−Ans(b,c−1)+Ans(a−1,c−1)TotalAns=Ans(b...原创 2018-10-16 18:26:51 · 180 阅读 · 0 评论 -
#分块,二分#zoj 2112 Dynamic Rankings
题目支持修改的区间动态第k小分析树状数组套主席树(主席树不支持单点修改)太麻烦了,所以就用一种虽然时间略长但是比较简短的代码,当然运用到大段维护,小段朴素的方法,具体就是二分答案,其实理解上去还是比较简单的代码#include <cstdio>#include <cmath>#include <algorithm>#defi...原创 2018-09-12 18:09:19 · 171 阅读 · 0 评论 -
#整除分块#洛谷 3935 Calculating
题目求[l∼r][l\sim r][l∼r]的约数个数和分析首先可以把它用前缀和表示,那关键是怎么实现呢?设f[n]f[n]f[n]为[1∼n][1\sim n][1∼n]的约数个数和,那么f[n]=∑i=1n⌊ni⌋(转换成枚举约数的思想)f[n]=\sum_{i=1}^n\lfloor\frac{n}{i}\rfloor(转换成枚举约数的思想)f[n]=i=1∑n⌊in⌋(转换成...原创 2019-03-26 18:25:46 · 141 阅读 · 0 评论 -
2019.01.24【NOIP提高组】模拟 B 组
第一次AKJZOJ 3912 超氧化钾题目分析代码JZOJ 3903 艰难的选择题目分析代码JZOJ 3914 人品问题题目分析代码后续JZOJ 3912 超氧化钾题目求∑i=1yxmod&amp;ThinSpace;&amp;ThinSpace;y\sum_{i=1}^yx \mod y∑i=1yxmody分析那么这道题其实高仿余数求和的题目,my 题解那么首先这个式子可以改写成...原创 2019-01-24 12:24:29 · 288 阅读 · 0 评论 -
#莫比乌斯反演,整除分块,线性筛,二分答案#bzoj 2440 jzoj 2475 洛谷 4318 完全平方数
题目求第kkk个没有完全平方数因子的数(自动忽略1)分析然而可以发现,若要这样去找,那么莫比乌斯函数不能为0,那么也就是说二分查找一个区间[1…n][1\dots n][1…n]使其中的符合要求的数≥k\geq k≥k,且nnn最小,那么具体的判断过程可以用整除分块解决。Ans=∑i=1i2≤n⌊ni2⌋∗μ(i)Ans=\sum_{i=1}^{i^2\leq n}\lfloor\fra...原创 2018-10-16 17:52:19 · 177 阅读 · 0 评论 -
#莫比乌斯反演,整除分块#洛谷 3455 ZAP-Queries
题目给定n,mn,mn,m,求1≤x≤n1\leq x\leq n1≤x≤n,1≤y≤m1\leq y\leq m1≤y≤m满足gcd(x,y)=dgcd(x,y)=dgcd(x,y)=d的(x,y)(x,y)(x,y)个数分析设f(d)=∑i=1n∑j=1m[gcd(i,j)=d]f(d)=\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)=d]f(d)=i=1∑...原创 2018-10-05 08:34:58 · 200 阅读 · 0 评论 -
#莫比乌斯反演,线性筛,整除分块#洛谷 2257 YY的GCD
题目给定nnn, mmm,求1≤x≤n1\leq x\leq n1≤x≤n, 1≤y≤m1\leq y\leq m1≤y≤m且gcd(x,y)gcd(x, y)gcd(x,y)为质数的(x,y)(x, y)(x,y)有多少对分析f(d)=∑i=1n∑j=1m[gcd(i,j)=d]f(d)=\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)=d]f(d)=i=1∑n...原创 2018-10-04 22:52:08 · 207 阅读 · 0 评论 -
#莫队,分块#洛谷 4396 bzoj 3236 作业
题目给定了一个长度为n的数列和若干个询问,每个询问是关于数列的区间表示数列的第1个数到第r个数),首先你要统计该区间内大于等于a,小于等于b的数的个数,其次是所有大于等于a,小于等于b的,且在该区间中出现过的数值的个数。分析根据这道题的复杂的询问,相对于线段树和树状数组是很难解决的,那么就需要用分块维护,然而用了分块还不够,于是莫队就上场了,当然对于神奇的优化暴力就不多说了...原创 2018-08-28 20:31:45 · 135 阅读 · 0 评论 -
#带修改莫队,分块#jzoj 1942 洛谷 1903 数颜色
题目Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔。 R P Col 把第P支画笔替换为颜色Col。需要满足查询分析这道题看起来就是要离线的,需要用莫队,但是原莫队不支持修改,那么就弄一弄,当然还要用分块优化,就没有什么了(jzoj卡逐字符输入)代码#include <cstdio>#include <cmath>...原创 2019-10-24 21:33:48 · 146 阅读 · 0 评论 -
#分块#洛谷 3203 弹飞绵羊
题目在地上沿着一条直线摆上nnn个装置,每个装置设定初始弹力系数kikiki,当绵羊达到第iii个装置时,它会往后弹kikiki步,达到第i+kii+kii+ki个装置,若不存在第i+kii+kii+ki个装置,则绵羊被弹飞。绵羊想知道当它从第iii个装置起步时,被弹几次后会被弹飞。(带修改)分析首先正解是LCT(树链剖分),但是...原创 2019-03-25 17:52:01 · 141 阅读 · 0 评论