树状数组
Link_Ray
这个作者很懒,什么都没留下…
展开
-
P1972 树状数组求区间种类数
https://www.luogu.org/problemnew/show/P1972 题解 给定一段序列,每次询问一个区间[l,r]里有多少个不相同的数。经典的做法便是,离线处理,将这些区间按照r关键字从小到达排序。然后遍历这个序列,如果当前数x在之前的pre位置出现过,那么c[pre[x]]-1,c[now[x]]+1,当到达r时,答案便是sum[r]-sum[l-1],其中sum[i]是前缀...原创 2019-03-13 22:58:09 · 392 阅读 · 0 评论 -
树状数组找出[1,r]中比x小的数的个数
#include <bits/stdc++.h> using namespace std; #define FOR0(a,b) for(int i = a; i < b; ++i) #define FORE(a,b) for(int i = a; i <= b; ++i) typedef long long ll; typedef pair<int,int> p...原创 2019-03-21 10:05:19 · 401 阅读 · 0 评论 -
树状数组小结
树状数组可以以lognlognlogn的复杂度完成更新与查询。一个很基本的操作就是可以单点修改,然后区间求和或区间求最大/最小值。 最近做了几道有关树状数组的题,发现了其还有一种用法。 若一个序列需要维护两种条件,那么可以先将一种条件排序,另一种条件用树状数组维护。 例如,令序列的前缀和为pre,要查询序列中满足pre[i] > pre[j]&& i>j的对数。 暴力枚...原创 2019-03-21 16:00:16 · 136 阅读 · 0 评论 -
【2019湘潭邀请赛C】HDU 6534 Chika and Friendly Pairs(莫队)
题意 给你一个序列,多次询问,每次让你回答一个区间中差的绝对值不超过一个给定常数K的元素对数。 题解 首先分析下复杂度,n,m=2.7∗104n,m = 2.7*10^4n,m=2.7∗104,莫队复杂度n32n^{\frac{3}{2}}n23,离散化复杂度3nlog(3n)3nlog(3n)3nlog(3n),树状数组查询修改log(3n)∗log(3n)log(3n)*log(3n)log...原创 2019-05-22 09:27:24 · 370 阅读 · 0 评论