![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树状数组
文章平均质量分 75
y20070316
这个作者很懒,什么都没留下…
展开
-
【BZOJ】1878 HH的项链
Overview求区间不同数的个数。 N≤50000N\leq 50000,M≤200000M\leq 200000Analysis1. 莫队算法多个区间询问,有在线和离线的方法。先考虑离线吧。 按照块排序,使用莫队算法可以轻松解决。时间复杂度:O(nn−√)O(n\sqrt n)代码:#include <cstdio>#include <cmath>#include <cctype>#i原创 2016-01-23 23:39:11 · 669 阅读 · 1 评论 -
【BZOJ】3339 RMQ Problems - Ⅰ - 题解
【题意】 有一个长度为nn的数组a1,a2,…,an{a_1,a_2,…,a_n}。mm次询问,每次询问一个区间[l,r][l,r]内最小没有出现过的自然数mex(al,al+1,...,ar)mex(a_l,a_{l+1},...,a_r)。 【数据范围】 n,q≤200000n,q\leq 200000 0≤ai≤2000000\leq a_i\leq 200000且ai∈Za_i\in原创 2016-01-21 17:02:11 · 601 阅读 · 0 评论 -
【BZOJ】3339 - Ⅲ - 变式Ⅱ+变式Ⅲ
变式Ⅱ【题意】 有一个长度为nn的数组a1,a2,…,ana_1,a_2,…,a_n。mm次询问,每次询问一个区间[l,r][l,r]内次小没有出现过的自然数mex2(al,al+1,...,ar){mex}_2(al,al+1,...,ar)。【数据范围】 n,q≤200000n,q\leq 200000 0≤ai≤2000000\leq a_i\leq 200000且ai∈Za_i\in原创 2016-01-21 22:05:19 · 393 阅读 · 0 评论 -
[CodeForces #80 Div 1 D] 分块+树状数组/线段树
Part 1 题解题意给出一个长度为N(≤300000)N(\leq 300000)的数列aia_i,再给出MM个询问,每个询问是形如(x,y)(x,y)的形式,你需要输出ax+ax+y+ax+2y+...+ax+kya_x+a_{x+y}+a_{x+2y}+...+a_{x+ky}的和,其中x+(k+1)y>Nx+(k+1)y>N。分析对于每个询问,首先我们想到的方法是依次将axa_x,ax+ya原创 2016-02-03 17:59:23 · 701 阅读 · 0 评论 -
CodeChef "Chef and Churus" 分块+树状数组
题意给定nn个数和nn个区间和f[i]=∑rik=liakf[i]=\sum_{k=l_i}^{r_i} a_k,支持两种操作: 1. 将aia_i变为xx; 2. 求编号为xx到yy的所有ff的和。n≤100000n\leq 100000分析对于每个fif_i,可以直接使用树状数组求出。 所以我们可以使用分块,中间的直接用块的答案,边上的用树状数组。首先我们进行预处理,记录第i块中每个编号的原创 2016-02-02 17:11:22 · 492 阅读 · 0 评论 -
【BZOJ 3295】动态逆序对 - 分块+树状数组
题目描述给定一个1~n的序列,然后m次删除元素,每次删除之前询问逆序对的个数。分析:分块+树状数组(PS:本题的CDQ分治解法见下一篇)首先将序列分成T块,每一块开一个树状数组,并且先把最初的答案统计完成。对于每一次删除,找到对应位置,考虑删除之后的增减情况: ①块内:直接暴力,对于左边,少了比它大的个数,对于右边,少了比它小的个数,O(nT)O({n\over T}) ②块外:枚举每一块。对于原创 2016-03-12 14:51:06 · 374 阅读 · 0 评论