看到好像没人发树状数组的题解,于是就发一篇
题目大意
给出一个长度为$n$的序列$a$,给出$m$个查询$l$,对于每个查询输出$[l,n]$的区间内不同数的个数。
分析:
将查询按照$l$的大小排序,从大到小的遍历,每次将$>=$当前$l$的位置的$a[i]$全部加入树状数组,让树状数组记录每个数是否出现过,每次的答案就是查询树状数组的总和。
代码:
1 |
|
希望你们不要$ctrl+c$ $ctrl+v$
看到好像没人发树状数组的题解,于是就发一篇
给出一个长度为$n$的序列$a$,给出$m$个查询$l$,对于每个查询输出$[l,n]$的区间内不同数的个数。
分析:
将查询按照$l$的大小排序,从大到小的遍历,每次将$>=$当前$l$的位置的$a[i]$全部加入树状数组,让树状数组记录每个数是否出现过,每次的答案就是查询树状数组的总和。
代码:
1 | #include <cstdio> |
希望你们不要$ctrl+c$ $ctrl+v$