分块
Love_xyh
这个作者很懒,什么都没留下…
展开
-
5.8 Day4
分块 分块算法,下限低上限高,属于一块大内容。从什么单点修改,到单点查询,再到区间修改,区间查询,再到后来的什么插入删除一个值等等,都可以用分块来做。而分块的每一道题目,几乎都是一个模板,所以,学习分块的时间会比较长,之后的几天,都会有更新博客中的模板。 模板:区间加法,单点查值 代码: #include <bits/stdc++.h> using namespace std; con...原创 2019-05-07 23:16:23 · 171 阅读 · 0 评论 -
洛谷 P4137 Rmq Problem / mex
洛谷加强数据以后,无论是怎样改变块的大小或是用奇偶块排序,都不能过。 所以这里介绍一下值域分块。 在这里我们可以直接利用奇偶块排序时分的块。 在add或del改变cnt值的同时,改变相应块的权值即可。 最后的查询就能变为sqrt(n)。 #include <bits/stdc++.h> using namespace std; const int N=2e5+5,M=500; int n,m,t,nowl,nowr,block; int a[N],b[N],cnt[N],ans[N],id[N]原创 2020-07-27 19:38:05 · 175 阅读 · 1 评论 -
CF342E Xenia and Tree
首先思考一下暴力怎么写:(有以下两种很明显的方法) 1.把每个不断得到的红点都存储下来,对于后面的每个询问,与每个红点通过lca求得点距,取最小值。 2.每得到一个红点,就对于整棵树做一次bfs,更新树中每个点到最近红点的距离。 我们发现,如果红点数量为n/2个,询问数量为n/2个,那么两种暴力思想都会被卡。 那么我们就把红点分个块来处理吧。 假设红点数量和为S。 将红点分为sqrt(S)个块,每个块内sqrt(S)个红点。 当每得到一整个块个数的红点时(即sqrt(S)),就对整棵树做一次bfs。复杂度:原创 2020-07-22 21:50:29 · 306 阅读 · 1 评论