[loj6278]数列分块入门2】的更多相关文章

题目大意: 给你一个长度为$n(n\leq 50000)$的序列$A$,支持进行以下两种操作: 1.将区间$[l,r]$中所有数加上$c$: 2.询问区间$[l,r]$中小于$c^2$的数的个数.思路: 分块. 对于整块的数据打标记,零散的数据直接修改.同时维护同一块中从小到大的顺序,统计时对于同一块中的数二分答案,零散的数直接统计. #include<cmath> #include<cstdio> #include<cctype> #include<algori…
做法1 以$K$为块大小分块,并对每一个块再维护一个排序后的结果,预处理复杂度为$o(n\log K )$ 区间修改时将整块打上标记,散块暴力修改并归并排序,单次复杂度为$o(\frac{n}{K}+K)$ 区间查询时在整块中二分,散块暴力枚举,单次复杂度为$o(\frac{n}{K}\log K+K)$ 显然取块大小为$K=\sqrt{n\log n}$时最优,单次复杂度均为$o(n\sqrt{n\log n})$ 时间复杂度为$o(n\log n)-o(\sqrt{n\log n})$ 做法…
查询小于k的值 注意lower_bound一定要减去查找的起始位置得到正确的位置 调了快两天 淦 #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> using namespace std; ],b[],belong[],tag[],num,sz,n; void calbe(int n){ ;i<=n;i++){ belong[i]=(i-)/sz+; }…
题意:支持区间加,询问区间中元素排名 维护两个域.一个域维护原序列,一个域维护快内排序序列. 每次修改后更新快内排序序列. 修改时O(sqrt(n)log(sqrt(n))) 询问时O(sqrt(n)log(sqrt(n))) 大概是这个量级吧 #include <bits/stdc++.h> using namespace std; ],bla,a[],a0[],b[],bi[],n; int t1,t2,t3,t4; void init() { bla=sqrt(n); ;i<=n;…
Portals 分块需注意的问题 数组大小应为,因为最后一个块可能会超出的范围. 当操作的区间在一个块内时,要特判成暴力修改. 要清楚什么时候应该+tag[t] 数列分块入门 1 给出一个长为的数列,以及个操作,操作涉及区间加法,单点查值. //数列分块入门 1 #include <cstdio> #include <cmath> inline char gc() { static char now[1<<16],*S,*T; if(S==T) {T=(S=now)+f…
Preface 最后一题我一直觉得用莫队是最好的. 数列分块入门 7--区间乘法,区间加法,单点询问 还是很简单的吧,比起数列分块入门 7就多了个区间乘. 类似于线段树,由于乘法的优先级高于加法,因此我们先乘后加. 具体的,我们对于每一个块再额外维护一个乘法标记,每次乘法时同时更新乘法/加法标记. CODE #include<cstdio> #include<cctype> #include<cmath> #include<algorithm> using…
Preface 个人感觉这中间的三题是最水的没有之一 数列分块入门 4--区间加法,区间求和 这个也是很多数据结构完爆的题目线段树入门题,但是练分块我们就要写吗 修改还是与之前类似,只不过我们要维护每一块内元素的和,注意这个要实时更新 这样就可以轻松水过了. CODE #include<cstdio> #include<cctype> #include<cmath> using namespace std; const int N=50005,BLO=250; int…
Preface 分块,一个神奇的暴力算法.可以把很多\(O(n^2)\)的数据结构题的暴力优化到常数极小的\(O(n\sqrt n)\).当一些毒瘤题无法用线段树,主席树,平衡树,树状数组......等\(O(n\ logn)\)方法写出时当然在你不会写这些算法的时候用大力分块骗分是再好不过的方法了! 当然分块的大致思想比较简单,我们看一下: /Here is Pic 1 但是由于分块在实际应用中有不同的方法,所以让我们来找各种各样的板子题来练练手吧. 数列分块入门 1--区间加法,单点查值 这…
昨天对着代码看了一晚上 然后今天终于在loj上过了 数列分块入门9题撒花★,°:.☆( ̄▽ ̄)/$:.°★ . 然后相当玄学 块的大小调成\(\sqrt{n}\)会TLE,改成150就过了 啧 然后就是用map离散化之后的值不能直接比较大小 锅锅锅 #include <cstdio> #include <algorithm> #include <cstring> #include <vector> #include <map> #include…
#6277. 数列分块入门 1 内存限制:256 MiB时间限制:100 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录统计讨论 3 测试数据 题目描述 给出一个长为 n 的数列,以及 n 个操作,操作涉及区间加法,单点查值. 输入格式 第一行输入一个数字 n. 第二行输入 n 个数字,第 i 个数字为 ai,以空格隔开. 接下来输入 n 行询问,每行输入四个数字 opt.l.r.c,以空格隔开. 若 opt=0,表示将位于 [l,r]的之间的数字都加 c…