![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分块
AKone123456
这个作者很懒,什么都没留下…
展开
-
数列分块入门 4 LibreOJ - 6280-------------------分块
解析: 求区间和需要另开一个sum数组来记录每一个分块的总和 #include<bits/stdc++.h> using namespace std; const int N=1e6+1000; typedef long long ll; int l[N]; int r[N]; int pos[N]; ll lazy[N]; ll sum[N]; ll a[N],res; int ...原创 2020-04-29 14:40:01 · 139 阅读 · 0 评论 -
数列分块入门 2 LibreOJ - 6278------------------分块
解析: 对于区间加法: 我们暴力计算哪些不完整的块 对于完整的块用懒惰标记记录 对于区间查询 ,查小于x2 d的个数 我们可以用b数组copy原序列。 在暴力修改不完整的块时,我们破坏了该块的单调性,所以我们需要给该块重新赋值 重新排序。。 这里可以暴力求解 对于修改完整块的时候,我们二分计算就行了。 #include<bits/stdc++.h> using namespace...原创 2020-04-29 13:47:40 · 220 阅读 · 0 评论 -
数列分块入门 1 LibreOJ - 6277-----------------------分块
给出一个长为 n 的数列,以及 n 个操作,操作涉及区间加法,单点查值。 Input 第一行输入一个数字 n。 第二行输入 n 个数字,第 i 个数字为 ai,以空格隔开。 接下来输入 n 行询问,每行输入四个数字 opt、l、r、c,以空格隔开。 若 opt=0,表示将位于 [l,r] 的之间的数字都加 c。 若 opt=1,表示询问 ar 的值(l 和 c 忽略)。 Output 对于每次询问...原创 2020-04-27 23:50:46 · 115 阅读 · 0 评论 -
分块入门----------------模板
#include<bits/stdc++.h> using namespace std; const int N=5e4+5; int a[N];//原始序列 int l[N] ;//第i个块的左区间端点 int r[N];//第i个块的右区间端点 int pos[N];//第i个点属于第几个块 int main() { int n; scanf("%d",&n); ...原创 2020-04-27 23:13:23 · 151 阅读 · 0 评论