[LOJ] 分块九题 5】的更多相关文章

单点插入,单点查询. 优化了的链表. 链表老写错,干脆用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…
闲话 莫队算法似乎还是需要一点分块思想的......于是我就先来搞分块啦! 膜拜hzwer学长神犇%%%Orz 这九道题,每一道都堪称经典,强力打Call!点这里进入 算法简述 每一次考试被炸得体无完肤之后,又听到讲题目的Dalao们爆出一句 数据不大,用分块暴力搞一下就AC了 的时候,我就会五体投地,不得翻身...... 分块?暴力?真的有如此玄学? 直到现在我还是觉得它很笨拙,但要熟练运用(尤其是打大暴力部分分的时候),绝非易事. 没错,分块是优化的暴力,更轻松地资瓷在线,是一种算法思想,主…
hzwer分块9题 分块1:区间加法,单点查询 Code #include<bits/stdc++.h> #define in(i) (i=read()) using namespace std; const int N=5e5+10,inf=2e9; int read() { int ans=0,f=1; char i=getchar(); while(i<'0' || i>'9') {if(i=='-') f=-1; i=getchar();} while(i>='0'…