题意:求区间不同自然数个数。
主席树裸题,记录一下last[a[i]]表示上一个数出现的位置,然后用主席树预处理差分一波,接着就可以直接做了。
还要在细一点的话,就是说,我在i这个位置上把ai加上去,然后在last[a[i]]的地方把它减掉。。
#include<cstdio>
#include<cstring>
#include<algorithm>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fd(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
const int N=1e5+5;
struct node
{
int l,r,sum;
}t[N*40];
int root[N],a[N],tmp;
int last[N