2020暑期集训第一讲-博弈论
课件下载
2019算法讲堂第七讲-动态规划
课件下载
2019算法讲堂第六讲-简单搜索
课件下载
2019算法讲堂第四讲-数论基础
课件下载
2019算法讲堂第二讲-C语言基础教程(二)
课件下载.pdf)
2019算法讲堂第一讲-C语言基础教程(一)
课件下载%E8%AE%B2%E4%B9%89.pdf)
2019暑期集训第十二讲:高级数据结构(三)
分块分块是一种思想,对于一些题目,首先线段树等数据结构,分块作为一个备用方案
它擅长做的一些事情
区间和
将序列分段,每段长度$T$,那么一共右$n\over T$段,大段维护小段暴力,复杂度$O({n\over T}+T)$
也可以维护很多种前缀和进而做到$O(1)$查询
对询问分块
如果操作次数比较少,可以先把操作记下来,在询问的时候加上这些操作的影响
T个操作,则修改$O(1)$,询问$O(T)$
莫队莫队算法是由莫涛提出的算法,可以解决一类离线区间询问问题,适用性极为广泛。同时将其加以扩展,便能轻松处理树上路径询问以及支持修改操作。
形式假设 n=m,那么对于序列上的区间询问问题,如果从$[l,r]$的答案能够$O(1)$扩展到 $[l-1,r],[l+1,r],[l,r+1],[l,r-1]$(即与 $[l,r]$ 相邻的区间)的答案,那么可以在$O(n\sqrt n)$ 的复杂度内求出所有询问的答案。
实现
排序:对于区间$[l,r]$,以$l$所在块的编号为第一关键字,以$r$为第二关键字从小到大排序
实现:先排序,顺序处理每一个询问,暴力从上一个区间的答 ...