[总集] LOJ 分块1 – 9】的更多相关文章

目录 分块9题 出题人hzw的解析 数列分块入门 1 修改:区间加 查询:单点值查询 代码 数列分块入门 2 修改:区间加 查询:区间排名 代码 数列分块入门 6 修改:单点插入 查询:单点值 代码 数列分块入门 7 修改:区间加,区间乘 查询:单点查询 代码 数列分块入门 8 修改:区间赋值 查询:区间计数 代码 [总集] LOJ「分块」数列分块入门1 – 9 分块9题 出题人hzw的解析 (tips.以下代码中IO优化都已省去,想看可以点传送门) 数列分块入门 1 修改:区间加 查询:单点值…
从零开始的分块学习系列(感谢hzwer) 题目顺序是我建议的做题顺序 先说一句:分块的核心思想(其实本身分块就可以说是一种思想)是:均摊(或者说平衡/权衡?)复杂度,同时这种思想本身不只局限于序列分块(前一篇解题里有提到) 序列分块之① 区间加法+单点查询 分块入门题 知道分块的思想之后应该都会做,对整块打标记,对不超过块大小的零散区间暴力修改:查询的时候就是原数+所在块的标记 #include<cmath> #include<cstdio> #include<cstring…
单点插入,单点查询. 优化了的链表. 链表老写错,干脆用vector,也不算慢. 注意链表退化的问题,及时(比如操作根号n次)就重新建块,实测速度可以提高一倍,这还是数据随机的情况,若涉及大量同一位置插入,会让分块大大退化. build没必要写两个. //Stay foolish,stay hungry,stay young,stay simple #include<iostream> #include<cmath> #include<cstring> #include…
https://loj.ac/problem/6280 区间修改,区间求和. 本来线段树的活. //Stay foolish,stay hungry,stay young,stay simple #include<iostream> #include<cstdio> #include<cctype> #include<cmath> using namespace std; typedef long long ll; const int MAXN=500005…
https://loj.ac/problem/6279 区间修改,区间查询前驱. TLE无数,我觉得这代码最精髓的就是block=1000. 谜一样的1000. 两个启示: 块内可以维护数据结构,比如set 可以换换块大小,自造数据测试时间 //Stay foolish,stay hungry,stay young,stay simple #include<iostream> #include<algorithm> #include<cstring> #include&…
https://loj.ac/problem/6278 区间修改,查询区间第k大. 块内有序(另存),块内二分. 还是用vector吧,数组拷贝排序,下标搞不来.. //Stay foolish,stay hungry,stay young,stay simple #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<cstdio> #i…
https://loj.ac/problem/6277 区间修改,单点查询. //Stay foolish,stay hungry,stay young,stay simple #include<iostream> #include<cstdio> #include<cctype> #include<cmath> using namespace std; const int MAXN=500005; inline int read_d(){ int ret=…
区间查询数值+整体赋值 维护tag代表整个区间被赋成了tag[i] 用pushdown操作,而不是修改了再check. 不压缩代码了,调起来心累,长点有啥不好. //Stay foolish,stay hungry,stay young,stay simple #include<iostream> #include<cmath> #include<cctype> #include<cstdio> using namespace std; inline int…
区间加法,区间乘法,单点查询. 洛谷线段树2 屡清加法乘法的关系,定义答案为 a*mut+add 对于整块: 新的乘w,mut和add都要乘w 新的加w,add加w //Stay foolish,stay hungry,stay young,stay simple #include<iostream> #include<cmath> #include<cstdio> #include<cctype> using namespace std; inline i…
区间开平方,区间查询. lazy标记改为区间是否全是1或者0,这样的区间是没有更新价值的. //Stay foolish,stay hungry,stay young,stay simple #include<iostream> #include<cmath> #include<cstdio> #include<cctype> #define sq(x) (floor(sqrt(x))) using namespace std; const int MAXN…