考虑到数字只有n个,那么每次询问的答案肯定在 [ 0 , n + 1 ] [0,n+1] [0,n+1]范围内,所以对于值大于n+1的元素无需考虑。
前缀主席树,每个主席树维护权值最后一次出现的位置,那么对于查询 [ l , r ] [l,r] [l,r]就是查找第r棵树上出现位置小于 l l l的权值,那么只需要维护最后一次出现位置的最小值即可。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+7;
struct Tree{
int lc,rc,minn;
}tree[maxn*30];
int root[maxn],tot;
const int inf=0x3f3f3f3f;

&spm=1001.2101.3001.5002&articleId=102478555&d=1&t=3&u=8b4a113bc0564028a03f309df147a925)
678

被折叠的 条评论
为什么被折叠?



