题意:给出N个数,M个询问,每次询问给出区间内不同数的个数。
解法:很经典的题目,可以将每一个数依次插入主席树,插入时,将这个位置+1,并将最近的一个等值的位置-1即可。然后对于询问区间L,R,只要在第R颗树上询问区间L,R的和就是答案。类似于这个思想,可以考虑离线处理询问,从左往右遍历插入,处理所有以这当前点为右端点的询问,这样就不需要可持久化了,并且树状数组就可以轻松维护了。
主席树代码:
#include
#include
#include
#include
#include
#include
#include
#include
离线树状数组代码:
#include
#include
#include
#include
#include
#include
#include
#include